簡體   English   中英

開始交易…提交交易問題

[英]Begin Transaction … Commit Transaction Issue

我對使用交易有疑問。 考慮以下代碼:

declare @trans_name varchar(max) = 'Append'
begin tran @trans_name
    insert into SIDB_Module
    (module_name, module_description, modulelevel, parentid, issystem, iscurrent)
    values
    (@module_name, @module_description, @modulelevel, @parentid, @issystem, 1)
    set @moduleid = SCOPE_IDENTITY()
    declare @id int = OBJECT_ID('SIDB_Module')
    exec usp_M_SIDB_TransactionInformation_App_Append
        @moduleid, id, 'append' ,@createdby_userid
if @@ERROR <> 0
rollback tran @trans_name
commit tran @trans_name

事務是否仍然適用於此。即使下一個插入查詢也位於其他存儲過程上?

是的,對usp_M_SIDB_TransactionInformation_App_Append的調用是事務的一部分

注意:您的錯誤處理是SQL Server 2000中的“舊樣式”(使用@@ ERROR),如果內部proc回滾或提交,將生成錯誤(錯誤266)。

有關更多信息,請參見包含TRY CATCH ROLLBACK模式的嵌套存儲過程?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM