SQL回滚事务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL回滚事务相关的知识,希望对你有一定的参考价值。
我正在尝试删除表格中的数据
BEGIN TRAN
DELETE FROM TABLEA
DELETE FROM TABLEB
ROLLBACK TRAN
但是当我检查表中的数据时,数据确实存在。
答案
如果要回滚事务,则取消未提交的更改。如果您打开事务,删除和回滚,则数据将存在。
如果要提交事务(删除信息),则执行
BEGIN TRAN
DELETE FROM TABLEA
DELETE FROM TABLEB
COMMIT TRAN
另一答案
以下是有关SQL Server中TRANSACTION
的一些解释
交易是一个单一的工作单位。如果事务成功,则在事务期间进行的所有数据修改都将被提交并成为数据库的永久部分。如果事务遇到错误并且必须取消或回滚,则所有数据修改都将被删除。
另外请记住,使用TRANSACTION
暂时锁定表,所以你必须小心。
BEGIN TRAN
Statement1
Statement2
COMMIT TRAN
如果其中一个声明失败或有一些错误,transaction
将rollback
并忽略所有声明,并且将不会有任何更改
当你使用ROLLBACK TRAN
时,它会删除从transaction
开始使用COMMIT TRAN
所做的所有数据修改
另一答案
更换
ROLLBACK TRAN
同
COMMIT TRAN
并且数据将被删除。 rollback tran
表示取消交易中的所有更改。
另一答案
- 作为总结
BEGIN TRAN
DELETE FROM TABLEA
DELETE FROM TABLEB
ROLLBACK/COMMIT TRAN
--ROLLBACK:在名称回滚中,它将取消该进程。
--COMMIT:在提交名称中,它将确认该过程。
另一答案
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块来回滚事务的一部分,这是事务失败的一部分。
以上是关于SQL回滚事务的主要内容,如果未能解决你的问题,请参考以下文章