1
請有人幫忙。存儲過程中的交易
我在作業中有幾個存儲過程,並在其中一個我開始一個事務刪除一些行,如果行大於10,然後我回滾。然而,如果沒有我不想立即犯下,因爲2個存儲過程後來我做了類似的事情。然而,如果在這種情況下,如果計數大於10,我希望它在我盯着交易(前兩個存儲過程)時一直回滾到
是否可以在存儲過程中啓動事務並具有多個回滾並在某處結束提交權限,還是必須將所有代碼放入一個存儲過程才能執行此操作?
請有人幫忙。存儲過程中的交易
我在作業中有幾個存儲過程,並在其中一個我開始一個事務刪除一些行,如果行大於10,然後我回滾。然而,如果沒有我不想立即犯下,因爲2個存儲過程後來我做了類似的事情。然而,如果在這種情況下,如果計數大於10,我希望它在我盯着交易(前兩個存儲過程)時一直回滾到
是否可以在存儲過程中啓動事務並具有多個回滾並在某處結束提交權限,還是必須將所有代碼放入一個存儲過程才能執行此操作?
您可以使用@@ 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
謝謝,那正是我想要的。 :) – Abbaskhan
MySQL或SQL-Server? – RandomSeed
在我看來,最好避免在存儲過程中完全提交和回滾。 –