学习BEGIN TRAN ||COMMIT TRAN

在SQLSERVER中,使用BEGIN TRAN || COMMIT TRAN进行事务处理以确保多个INSERT语句的数据一致性。当遇到主键约束等错误时,不正确的事务处理可能导致部分数据更新。通过设置XACT_ABORT ON或在插入语句后检查@@ERROR,可以确保整个事务在出现错误时被回滚,从而保持数据同步。
摘要由CSDN通过智能技术生成

今天在项目中用到了一个存储过程需要同时项三个表更新数据,如果其中一个有错,则将导致数据库数据不同步,为解决这一问题,查到了有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   语句还有什么用?  
   
  大侠们给指点指点吧.   谢谢啦.

 

***************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值