oracle中有回滚吗

2023年 4月 16日 70.3k 0

oracle中有回滚,回滚用于撤销当前事务或者有问题的事务,利用rollback方法即可完成事务的回滚,语法为“ROLLBACK [隐式关键字] [TO [SAVEPOINT] savepoint_name | FORCE string};”。 本教程操作环境

oracle中有回滚,回滚用于撤销当前事务或者有问题的事务,利用rollback方法即可完成事务的回滚,语法为“ROLLBACK [隐式关键字] [TO [SAVEPOINT] savepoint_name | FORCE 'string'};”。

本教程操作环境:windows10系统、Oracle 12c版、Dell G3电脑。

oracle中有回滚吗

一、概念

在 Oracle 中,rollback 用法与 commit 相反,是用来 撤销 当前事务或有问题的事务。

1.1 语法

ROLLBACK [WORK] [TO [SAVEPOINT] savepoint_name | FORCE 'string'};

例如:

work - 可选。隐式关键字,可写可不写。

to savepoint savepoint_name - 可选。rollback 语句撤销当前会话的全部更改,直到由 savepoint_name 指定的保存点。若是省略该子句,则全部更改都将被撤销。

force 'string - 可选'。用于 强制回滚 可能已损坏或有问题的事务。使用此子句,能够将单引号中的 事务id 指定为 字符串。能够在 系统视图 中找到名为 dba_2pc_pengding、v$corrupt_xid_list 的事务标识(没法将有问题的事务回滚到保存点。)

1.1 数据准备

DROP TABLE stu; -- if exists
CREATE TABLE stu (
s_id NUMBER,
s_xm VARCHAR2(30)
);
ALTER TABLE stu ADD CONSTRAINTS pk_stu_id PRIMARY KEY(s_id);

二、savepoint

回滚到 最近 的 pointsql

DECLARE

BEGIN
INSERT INTO stu(s_id, s_xm) VALUES(1, '小游子');
SAVEPOINT ps1;

INSERT INTO stu(s_id, s_xm) VALUES(2, '小优子');
SAVEPOINT ps2; -- 若也是 ps1,则回滚至此处(最近)

INSERT INTO stu(s_id, s_xm) VALUES(2, '小优子');

COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK TO ps1;
dbms_output.put_line(SQLCODE ||' : '||SQLERRM);
dbms_output.put_line(dbms_utility.format_error_backtrace);
END;

运行结果:

29.png

推荐教程:《Oracle视频教程》

以上就是oracle中有回滚吗的详细内容,更多请关注每日运维其它相关文章!

【本文由:香港云服务器 http://www.558idc.com/ne.html网络转载请说明出处】

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论