Oracle中的事物 主要是自治事务和事务保存点

1. 起始标志:通俗理解为事物中的第一条增删改语句

也就是能让plslq dev工具的window list那里小格子变绿的操作

2. 结束标志:

  • 显式提交commit
  • 隐式提交 DDL,DCL
    eg:insert
         update
         create table = 创建表 + commit
         这也就解释了为什么DDL不能回滚
  • 显示回滚:rollback
  • 隐式回滚:非正常退出 掉线,宕机。。。。

Oracle中事物的保存点

  1. savepoint a 开启一个保存点
  2. rollback to savepoint a 回滚到保存点

自治事务

PRAGMA AUTONOMOUS_TRANSACTION;
以下为我常用的在plsql中写日志用到的例子

  PROCEDURE savelog(p_action                 VARCHAR2 DEFAULT NULL
                   ,p_process_message        VARCHAR2 DEFAULT NULL
                   ,p_creation_date          DATE DEFAULT SYSDATE
                   ,p_created_by             NUMBER DEFAULT -1
                   ,p_last_updated_by        NUMBER DEFAULT -1
                   ,p_last_update_date       DATE DEFAULT SYSDATE
                   ,p_last_update_login      NUMBER DEFAULT -1
                   ,p_program_application_id NUMBER DEFAULT NULL
                   ,p_program_id             NUMBER DEFAULT NULL
                   ,p_attribute_category     VARCHAR2 DEFAULT NULL
                   ,p_attribute1             VARCHAR2 DEFAULT NULL
                   ,p_attribute2             VARCHAR2 DEFAULT NULL
                   ,p_attribute3             VARCHAR2 DEFAULT NULL
                   ,p_attribute4             VARCHAR2 DEFAULT NULL
                   ,p_attribute5             VARCHAR2 DEFAULT NULL
                   ,p_attribute6             VARCHAR2 DEFAULT NULL
                   ,p_attribute7             VARCHAR2 DEFAULT NULL
                   ,p_attribute8             VARCHAR2 DEFAULT NULL
                   ,p_attribute9             VARCHAR2 DEFAULT NULL
                   ,p_attribute10            VARCHAR2 DEFAULT NULL
                   ,p_attribute11            VARCHAR2 DEFAULT NULL
                   ,p_attribute12            VARCHAR2 DEFAULT NULL
                   ,p_attribute13            VARCHAR2 DEFAULT NULL
                   ,p_attribute14            VARCHAR2 DEFAULT NULL
                   ,p_attribute15            VARCHAR2 DEFAULT NULL
                   ,p_detail_msg             CLOB DEFAULT NULL) IS
    PRAGMA AUTONOMOUS_TRANSACTION;
  BEGIN
    INSERT INTO cux_pub_logs_2019
      (cux_pub_logs_2019_id
      ,action
      ,process_message
      ,creation_date
      ,created_by
      ,last_updated_by
      ,last_update_date
      ,last_update_login
      ,program_application_id
      ,program_id
      ,attribute_category
      ,attribute1
      ,attribute2
      ,attribute3
      ,attribute4
      ,attribute5
      ,attribute6
      ,attribute7
      ,attribute8
      ,attribute9
      ,attribute10
      ,attribute11
      ,attribute12
      ,attribute13
      ,attribute14
      ,attribute15
      ,detail_msg)
    VALUES
      (cux_pub_logs_2019_s.nextval
      ,p_action
      ,p_process_message
      ,p_creation_date
      ,p_created_by
      ,p_last_updated_by
      ,p_last_update_date
      ,p_last_update_login
      ,p_program_application_id
      ,p_program_id
      ,p_attribute_category
      ,p_attribute1
      ,p_attribute2
      ,p_attribute3
      ,p_attribute4
      ,p_attribute5
      ,p_attribute6
      ,p_attribute7
      ,p_attribute8
      ,p_attribute9
      ,p_attribute10
      ,p_attribute11
      ,p_attribute12
      ,p_attribute13
      ,p_attribute14
      ,p_attribute15
      ,p_detail_msg);
    COMMIT;
  END savelog;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值