[英]Transaction in Stored procedure
請有人幫忙。
我在一個作業中有幾個存儲過程,在其中一個過程中,我開始一個事務以刪除一些行,如果行大於10,則回滾。 但是,如果沒有,我不希望立即提交,因為2存儲過程以后我會做類似的事情。 但是,如果在這種情況下count大於10,我希望它一直回滾到我啟動事務時的狀態(兩個存儲過程之前)
是否可以在存儲過程中啟動事務並具有多個回滾並在某個地方的結尾處立即提交,還是必須將所有代碼放入1個存儲過程中才能做到這一點?
您可以使用@@ TRANCOUNT來確定您是否有未完成的未提交事務,然后使用它來指示存儲過程的邏輯。
CREATE PROCEDURE Proc1
AS
BEGIN
BEGIN TRANSACTION
// DO STUFF
IF (@@ROWCOUNT > 10)
ROLLBACK TRANSACTION
END
CREATE PROCEDURE Proc2
AS
BEGIN
IF (@@TRANCOUNT > 0)
BEGIN
// DO STUFF
IF (@@ROWCOUNT > 10)
ROLLBACK TRANSACTION
END
END
CREATE PROCEDURE Proc3
AS
BEGIN
IF (@@TRANCOUNT > 0)
BEGIN
// DO STUFF
IF (@@ROWCOUNT > 10)
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION
END
END
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.