[英]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.