sqlserver如何确保数据一致性,事务怎么使用?
1、打开sqlserver管理工具,在SQL语句窗口,
定义一个临时表,用于演示sqlserver事务的处理
if OBJECT_ID('tempdb..#tmpSW') is not null drop table #tmpSW;
create table #tmpSW(
Id int not null primary key,
ColName varchar(100)
)

2、往临时表中插入两条不重复记录
insert into #tmpSW(Id, ColName) values(1, '啊1');
insert into #tmpSW(Id, ColName) values(2, '啊2');

3、查询临时表的结果,此时可以看到上一步插入的两行记录
select * from #tmpSW

4、上面的sql目前为止都正常,但是,假设,有一天忘记了,再次插入了Id=1的记录会怎么样呢?从运行结果可以看出,报错了,违反了主键id的唯一性
insert into #tmpSW(Id, ColName) values(3, '新的3');
insert into #tmpSW(Id, ColName) values(1, '新的1');

5、上面的语句执行报错了,因为Id列是主键,不允许重复的。此时,查看一下临时表的结果,会发生一个惊人的现象,id=3的记录插入成功了
select * from #tmpSW

6、如果想让结果要么都成功,要么都失败,就需要使用到sqlserver的事务了
begin try
begin tran
insert into #tmpSW(Id, ColName) values(4, '新的4');
insert into #tmpSW(Id, ColName) values(1, '新的1');
commit tran
end try
begin catch
print '遇到错误,回滚事务'
rollback
end catch

7、上面的语句执行输出了错误信息,而且显示0行受到影响,我们再次查看临时表的数据,可以看到这一次id=4的记录没有插入进来了
select * from #tmpSW
