sqlserver如何确保数据一致性,事务怎么使用?

2026-03-06 16:29:34

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)

)

sqlserver如何确保数据一致性,事务怎么使用?

2、往临时表中插入两条不重复记录

insert into #tmpSW(Id, ColName) values(1, '啊1');

insert into #tmpSW(Id, ColName) values(2, '啊2');

sqlserver如何确保数据一致性,事务怎么使用?

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

select * from #tmpSW

sqlserver如何确保数据一致性,事务怎么使用?

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

insert into #tmpSW(Id, ColName) values(3, '新的3');

insert into #tmpSW(Id, ColName) values(1, '新的1');

sqlserver如何确保数据一致性,事务怎么使用?

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

select * from #tmpSW

sqlserver如何确保数据一致性,事务怎么使用?

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

sqlserver如何确保数据一致性,事务怎么使用?

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

select * from #tmpSW

sqlserver如何确保数据一致性,事务怎么使用?

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢