[英]Suppress transaction in stored procedure
我想知道是否可以抑制SQL存储过程中的事务。 我的SP中有以下情况(我希望实现):
WHILE TRUE
BEGIN TRY
BEGIN TRANSACTION A
RECEIVE MESSAGE FROM SSB QUEUE WITH TIMEOUT
BEGIN SUPPRESS TRANSACTION
WHILE RECORD IN TABLE
BEGIN TRANSACTION B
DELETE RECORD FROM TABLE OUTPUT RECORD INTO D
SEND RECORD D TO OTHER SSB QUEUE
COMMIT TRANSACTION B
END SUPPRESS TRANSACTION
COMMIT TRANSACTION A
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION A
END CATCH
所以我真正想做的是事务B没有被列入事务A :)
您正在描述一个“自治事务”,这是人们从Oracle(支持它们)迁移到MSSQL(不支持它们)的常见问题。 本文解释了各种选项,遗憾的是它们不是特别有吸引力:
如果这些选项都不适用于您,另一种选择是将一些控件转移到应用程序中并从数据库中移出,但当然只是将问题转移到另一个位置。 不过,这可能值得考虑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.