首页 > 技术文章 > C#执行Sql事务处理

Better-Zyq 2016-07-28 00:40 原文

http://blog.csdn.net/g1036583997/article/details/20464153

 

string strSql = string.Format(@"
set xact_abort on
begin tran
update CDS_tbl_appHead set status='Rejected',MODIFY_TIME=getdate(),modify_uid='{0}' where guid='{1}' and status in('Accepting','Accepted')
if @@rowcount>0
begin
update CDS_tbl_appDetail set track_Status='NotCar',driver_id='',driver_mobile='',car_id='',memo='',MODIFY_TIME=getdate(),modify_uid='{2}' where app_no='{3}'
select 1
end
else
select 0
commit tran", Token.Current.Id, arg, Token.Current.Id, arg);

 

 

Transact-SQL事务语句

BEGIN TRAN标记事务开始
COMMIT TRAN 提交事务
一般把DML语句(select ,delete,update,insert语句)放在BEGIN TRAN...COMMIT TRAN 之间作为一个事务处理
也就是那些语句执行过程中如果遇到错误,无论哪句遇到错误,所有语句都会回滚到BEGIN TRAN之前的状态。



SET XACT_ABORT ON

设置事务回滚的
当为ON时,如果你存储中的某个地方出了问题,整个事务中的语句都会回滚
OFF时,只回滚错误的地方


@@Rowcount主要是返回上次sql语句所影响的数据行数

推荐阅读