加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle 的异常和回滚

发布时间:2020-12-12 16:16:00 所属栏目:百科 来源:网络整理
导读:commit (提交),rollback(回滚) DECLARE dept_no NUMBER (2) := 70;BEGIN --开始事务 INSERT INTO dept VALUES (dept_no,'市场部','北京'); --插入部门记录 INSERT INTO dept VALUES (dept_no,'后勤部','上海'); --插入相同编号的部门记录 INSERT INTO em

commit (提交),rollback(回滚)

DECLARE
   dept_no   NUMBER (2) := 70;
BEGIN
   --开始事务
   INSERT INTO dept 
        VALUES (dept_no,'市场部','北京');               --插入部门记录
   INSERT INTO dept 
        VALUES (dept_no,'后勤部','上海');               --插入相同编号的部门记录        
   INSERT INTO emp                                        --插入员工记录
        VALUES (7997,'威尔','销售人员',NULL,TRUNC (SYSDATE),5000,300,dept_no);
   --提交事务
   COMMIT;
EXCEPTION
   WHEN DUP_VAL_ON_INDEX THEN                            --捕足异常
     DBMS_OUTPUT.PUT_LINE(SQLERRM);                   --显示异常消息
     ROLLBACK;                                           --回滚异常
END;

rollback会默认回滚所有事务,savepoint可以保存点,rollback可以回滚到前一个点,减少数据重复操作。
DECLARE
   dept_no   NUMBER (2) :=90;
BEGIN
   --开始事务
   SAVEPOINT A;
   INSERT INTO dept 
        VALUES (dept_no,'北京');               --插入部门记录
   SAVEPOINT B;   
   INSERT INTO emp                                        --插入员工记录
        VALUES (7997,dept_no);        
   SAVEPOINT C;                
   INSERT INTO dept 
        VALUES (dept_no,'上海');               --插入相同编号的部门记录
   --提交事务
   COMMIT;
EXCEPTION
   WHEN DUP_VAL_ON_INDEX THEN                            --捕足异常
     DBMS_OUTPUT.PUT_LINE(SQLERRM);                   --显示异常消息
     ROLLBACK TO B;                                      --回滚异常
END;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读