今天在项目中用到了一个存储过程需要同时项三个表更新数据,如果其中一个有错,则将导致数据库数据不同步,为解决这一问题,查到了有BEGIN TRAN ||COMMIT TRAN方法可以解决~
在网上搜了一会,看到一个帖子很受益:内容如下:
帖子地址:http://topic.csdn.net/t/20031030/15/2410812.html
楼主问题:
我在使用 SqlServer 的时候遇到这样一个问题.
我打算用下面的语句:
begin tran;
insert into TabA values(1);
insert into TabB values(1);
commit tran;
想的是两个插入操作要么同时成功, 要么 rollback.
但我发现它的执行结构却是:
------------------------------------------------------------------------------------
服务器: 消息 2627,级别 14,状态 1,行 1
违反了 PRIMARY KEY 约束 'PK_tabA'。不能在对象 'TabA' 中插入重复键。
语句已终止。
(所影响的行数为 1 行)
------------------------------------------------------------------------------------
第一条语句因为主键约束, 插入失败.
而第二条语句成功了. faint.
如果这样的话, 那 begin tran/commit tran 语句还有什么用?
大侠们给指点指点吧. 谢谢啦.
***************************