sqlserver 中在存储过程中的嵌套事物

sqlserver 中在存储过程中的嵌套事物,第1张

概述TransProc 过程强制执行其事务,而不管执行事务的进程的事务模式。如果在事务活动时调用 TransProc,很可能会忽略 TransProc 中的嵌套事务,而根据对外部事务采取的最终 *** 作提交或回滚其 INSERT 语句。如果由不含未完成事务的进程执行 TransProc,则在该过程结束时,COMMIT TRANSACTION 将有效地提交 INSERT 语句。CREATE TABLE T
Transproc 过程强制执行其事务,而不管执行事务的进程的事务模式。如果在事务活动时调用 Transproc,很可能会忽略 Transproc 中的嵌套事务,而根据对外部事务采取的最终 *** 作提交或回滚其 INSERT 语句。如果由不含未完成事务的进程执行 Transproc,则在该过程结束时,COMMIT TRANSACTION 将有效地提交 INSERT 语句。CREATE table TestTrans(Cola INT PRIMARY KEY,Colb CHAR(3) NOT NulL);GOALTER PROCEDURE Transproc @PriKey INT,@CharCol CHAR(3),@error_out int output ASBEGIN TRANSACTION InProc_1    INSERT INTO TestTrans VALUES (@PriKey,@CharCol)    INSERT INTO TestTrans VALUES (@PriKey + 1,@CharCol)set @error_out=@@errorCOMMIT TRANSACTION InProc_1;GOALTER PROCEDURE Transproc_2 @PriKey INT,@error_out int output ASBEGIN TRANSACTION InProc    INSERT INTO TestTrans VALUES (@PriKey + 2,@CharCol)    INSERT INTO TestTrans VALUES (@PriKey + 3,@CharCol)set @error_out=@@errorCOMMIT TRANSACTION InProc;GOBEGIN TRANSACTION OutOfProc;DECLARE @ERROR INT;EXEC Transproc 100,'aaa',@error_out=@ERROR outputEXEC Transproc_2  200,'bbb',@error_out=@ERROR output;print(@ERROR)IF ( @ERROR <= 0 ) BEGIN    PRINT('提交事物')    COMMIT TRANSACTION OutOfProc;END ELSE BEGIN    PRINT('事物回滚')    RolLBACK TRANSACTION OutOfProc;ENDGO当 SET XACT_ABORT 为 ON 时,如果执行 Transact-sql 语句产生运行时错误,则整个事务将终止并回滚。ms-help://MS.sqlCC.v9/MS.sqlSVR.v9.zh-CHS/tsqlref9/HTML/cbcaa433-58f2-4dc3-a077-27273bef65b5.htm
总结

以上是内存溢出为你收集整理的sqlserver 中在存储过程中的嵌套事物全部内容,希望文章能够帮你解决sqlserver 中在存储过程中的嵌套事物所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1175244.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存