PLSQL事务提交了,要怎么回滚

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PLSQL事务提交了,要怎么回滚相关的知识,希望对你有一定的参考价值。

参考技术A 如何启动Transaction; 共有三种方式
1.自动transaction
每句statement都是一个transaction.例一个update指令更新多笔纪录, 要就全部成功, 只要失败,全部会回复原值.

2.ExplicitTransaction
以Begin Transaction开始(开启)

3.ImplicitTransaction (建议不要用)
以Set Implicit_Transaction ON

如何结束Transaction; 共有三种方式
1. COMMIT Transaction(提交)
Transaction期间的任何修改,都会保证到数据库中

2. ROLLBACK Transaction(回滚)
数据会回复Transaction前状态

3. KILL <SPID> 强迫停止, 会rollback

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

如果其中一个声明失败或有一些错误,transactionrollback并忽略所有声明,并且将不会有任何更改

当你使用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块来回滚事务的一部分,这是事务失败的一部分。

以上是关于PLSQL事务提交了,要怎么回滚的主要内容,如果未能解决你的问题,请参考以下文章

git 代码回滚回退到指定版本 并 提交

git 代码回滚回退到指定版本 并 提交

git 代码回滚回退到指定版本 并 提交

30 jdbc事务设置

java在交易过程服务器挂掉怎么回滚

111