我正在尝试删除表中的数据
BEGIN TRAN
DELETE FROM TABLEA
DELETE FROM TABLEB
ROLLBACK TRAN
但是当我检查表中的数据时,数据确实存在。
我正在尝试删除表中的数据
BEGIN TRAN
DELETE FROM TABLEA
DELETE FROM TABLEB
ROLLBACK TRAN
但是当我检查表中的数据时,数据确实存在。
如果您正在回滚事务,则您正在取消未提交的更改。如果你打开一个事务,删除和回滚,数据就会存在。
如果你想提交交易(删除信息),然后做
BEGIN TRAN
DELETE FROM TABLEA
DELETE FROM TABLEB
COMMIT TRAN
TRANSACTION
以下是关于SQL Server中的一些解释
事务是单个工作单元。如果事务成功,则事务期间所做的所有数据修改都将提交并成为数据库的永久部分。如果事务遇到错误并且必须取消或回滚,则所有数据修改都将被删除。
还要记住,使用TRANSACTION
临时锁定表,所以你必须小心。
BEGIN TRAN
Statement1
Statement2
COMMIT TRAN
如果其中一个语句失败或有错误,transaction
将rollback
忽略所有语句,不会有任何更改
当您使用它时,请ROLLBACK TRAN
删除从使用开始时所做的所有数据transaction
修改COMMIT TRAN
代替
ROLLBACK TRAN
和
COMMIT TRAN
并且数据将被删除。rollback 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 块来回滚事务的一部分失败的所有内容。
——作为总结
BEGIN TRAN
DELETE FROM TABLEA
DELETE FROM TABLEB
ROLLBACK/COMMIT TRAN
--ROLLBACK:在名称中回滚,它会取消进程。
--COMMIT:在名称commit中,会确认进程。