1. 起始标志:通俗理解为事物中的第一条增删改语句
也就是能让plslq dev工具的window list那里小格子变绿的操作
2. 结束标志:
- 显式提交commit
- 隐式提交 DDL,DCL
eg:insert
update
create table = 创建表 + commit
这也就解释了为什么DDL不能回滚
- 显示回滚:rollback
- 隐式回滚:非正常退出 掉线,宕机。。。。
Oracle中事物的保存点
- savepoint a 开启一个保存点
- 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;