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
如果其中一个声明失败或有一些错误,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块来回滚事务的一部分,这是事务失败的一部分。
以上是关于PLSQL事务提交了,要怎么回滚的主要内容,如果未能解决你的问题,请参考以下文章