我想要一個表SQL ROLLBACK TRANSACTION
BEGIN TRAN
DELETE FROM TABLEA
DELETE FROM TABLEB
ROLLBACK TRAN
在刪除數據但是,當我檢查表中的數據,該數據確實存在。
我想要一個表SQL ROLLBACK TRANSACTION
BEGIN TRAN
DELETE FROM TABLEA
DELETE FROM TABLEB
ROLLBACK TRAN
在刪除數據但是,當我檢查表中的數據,該數據確實存在。
如果您正在回滾事務,您將取消未完成的更改。 如果您打開一個事務,刪除和回滾,數據將存在。
如果你想提交事務(刪除信息),然後做
BEGIN TRAN
DELETE FROM TABLEA
DELETE FROM TABLEB
COMMIT TRAN
更換
ROLLBACK TRAN
與
COMMIT TRAN
,數據將被刪除。 rollback tran
表示取消交易中所做的所有更改。
以下是有關TRANSACTION
在SQL Server
事務是一個工作單元一些解釋。如果事務成功,則在事務期間進行的所有數據修改都將被提交併成爲數據庫的永久部分。如果事務遇到錯誤並且必須被取消或回滾,則所有數據修改都將被刪除。
請注意,使用TRANSACTION
會暫時鎖定表格,因此您必須小心。
BEGIN TRAN
Statement1
Statement2
COMMIT TRAN
如果語句中的一個出現故障或有一些錯誤的transaction
將rollback
和忽略所有的發言,並
當您使用ROLLBACK TRAN
它抹去從一開始所做的所有數據修改將不會有變化在transaction
使用COMMIT TRAN
代替
BEGIN TRY
BEGIN TRAN
DELETE FROM TABLEA
DELETE FROM TABLEB
COMMIT TRAN
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
END CATCH
如果你有一個交易超過一個動作,你應該總是使用try-catch塊回滾一切交易的一部分失敗。
--as摘要
BEGIN TRAN
DELETE FROM TABLEA
DELETE FROM TABLEB
ROLLBACK/COMMIT TRAN
--ROLLBACK:在名稱回滾,將取消該過程。
--COMMIT:在名稱commit中,它將確認過程。
艾姆.....以及你期望的*?在交易的上下文中,您正在從兩個表中刪除。然後,您**回滾**該事務 - 這意味着:在該事務**中所做的所有更改都不會應用於數據庫**。所以這些數據行**並未真正刪除** - 這就是交易的全部要點! – 2012-07-27 14:04:47
但他表示它「存在」... – 2013-09-30 18:03:35