2

我正在尝试删除表中的数据

BEGIN TRAN 

DELETE FROM TABLEA
DELETE FROM TABLEB

ROLLBACK TRAN 

但是当我检查表中的数据时,数据确实存在。

4

5 回答 5

5

如果您正在回滚事务,则您正在取消未提交的更改。如果你打开一个事务,删除和回滚,数据就会存在。

如果你想提交交易(删除信息),然后做

BEGIN TRAN 

DELETE FROM TABLEA
DELETE FROM TABLEB

COMMIT TRAN 
于 2012-07-27T14:05:38.687 回答
3

TRANSACTION以下是关于SQL Server中的一些解释

事务是单个工作单元。如果事务成功,则事务期间所做的所有数据修改都将提交并成为数据库的永久部分。如果事务遇到错误并且必须取消或回滚,则所有数据修改都将被删除。

还要记住,使用TRANSACTION临时锁定表,所以你必须小心。

 BEGIN TRAN 
    Statement1
    Statement2
 COMMIT TRAN

如果其中一个语句失败或有错误,transactionrollback忽略所有语句,不会有任何更改

当您使用它时,请ROLLBACK TRAN删除从使用开始时所做的所有数据transaction修改COMMIT TRAN

于 2012-07-27T14:34:20.577 回答
1

代替

ROLLBACK TRAN 

COMMIT TRAN 

并且数据将被删除。rollback tran意味着取消在事务中所做的所有更改。

于 2012-07-27T14:06:51.430 回答
1
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 块来回滚事务的一部分失败的所有内容。

于 2012-07-27T14:52:24.177 回答
1

——作为总结

BEGIN TRAN 

DELETE FROM TABLEA
DELETE FROM TABLEB

ROLLBACK/COMMIT TRAN

--ROLLBACK:在名称中回滚,它会取消进程。

--COMMIT:在名称commit中,会确认进程。

于 2013-10-11T06:34:17.880 回答