簡體   English   中英

嘗試在SQL Server查詢中捕獲

[英]Try Catch in SQL Server Query

我怎樣才能?

陳述1:

UPDATE Members 
SET Count = Count - 1 
WHERE Count > 0;

陳述2:

INSERT INTO Sessions (Name, Etc) 
VALUES('Mike', 'Other')

如果語句1和2都成功,則返回新插入的行ID。

SELECT SCOPE_IDENTITY(); 

如果語句1或2失敗,我想回滾事務並返回0或-1。

我該如何構造? 任何幫助,將不勝感激。

SET XACT_ABORT ON

BEGIN TRY

    BEGIN TRANSACTION

    UPDATE [Members]
    SET [Count] = [Count] - 1 WHERE [Count] > 0;

    INSERT INTO [Sessions] ([Name], [Etc])
    VALUES ('Mike', 'Other')

    COMMIT TRANSACTION

END TRY
BEGIN CATCH

    IF @@TRANCOUNT > 0
        ROLLBACK TRANSACTION;

    RETURN 0

END CATCH

SELECT SCOPE_IDENTITY();

這是相關的MSDN文檔:

您可以執行以下操作

     Begin Try
        Begin tran 
           SQL logic
        Commit tran
     END try
     Begin Catch
        rollback tran            
        return 0 or -1
     end Catch

顯然,這只是您所要求的結構,但是您可以在此處獲得有關語法的更多信息,以及更多示例http://msdn.microsoft.com/zh-cn/library/ms175976.aspx

暫無
暫無

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

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