DML触发器--记录某张表的dml操作
来源:互联网 发布:淘宝香港丰胸 编辑:程序博客网 时间:2024/05/01 15:00
CREATE TABLE logs(
LOG_ID NUMBER(10) PRIMARY KEY,
LOG_TABLE VARCHAR2(10) NOT NULL,
LOG_DML VARCHAR2(10),
LOG_KEY_ID NUMBER(10),
LOG_DATE DATE,
LOG_USER VARCHAR2(15),
LOG_TERMINAL varchar2(100),
LOG_IP_ADDRESS varchar2(20)
);
CREATE SEQUENCE logs_id_squ INCREMENT BY 1
START WITH 1 MAXVALUE 9999999 NOCYCLE NOCACHE;
CREATE OR REPLACE TRIGGER DML_LOG
BEFORE --触发时间为操作前
DELETE OR INSERT OR UPDATE -- 由三种事件触发
ON emp
FOR EACH ROW -- 行级触发器
BEGIN
IF INSERTING THEN
INSERT INTO logs VALUES(logs_id_squ.NEXTVAL,'EMP','INSERT',:new.empno,SYSDATE,USER,SYS_CONTEXT('USERENV','TERMINAL'),SYS_CONTEXT('USERENV','IP_ADDRESS'));
ELSIF DELETING THEN
INSERT INTO logs VALUES(logs_id_squ.NEXTVAL,'EMP','DELETE',:old.empno,SYSDATE,USER,SYS_CONTEXT('USERENV','TERMINAL'),SYS_CONTEXT('USERENV','IP_ADDRESS'));
ELSE
INSERT INTO logs VALUES(logs_id_squ.NEXTVAL,'EMP','UPDATE',:new.empno,SYSDATE,USER,SYS_CONTEXT('USERENV','TERMINAL'),SYS_CONTEXT('USERENV','IP_ADDRESS'));
END IF;
END;
/
/** 测试部分
insert into emp values(1234,'shawn','clerk',7902,sysdate,3000);
commit;
select * from emp;
select * from logs;
update emp set sal=5000 where empno=1234;
commit;
select * from emp;
select * from logs;
delete * from emp where empno=1234;
commit;
select * from emp;
select * from logs;
**/
- DML触发器--记录某张表的dml操作
- DML触发器的缺憾
- Oracle数据库,当DML操作时执行触发器记录日志
- DML触发器
- DML触发器
- DML触发器
- DML触发器
- 触发器二(DML触发器)
- SQL Server 2005的DML触发器
- 今天说一下DML触发器的顺序
- oracle视图的DML操作
- JDBC的DML操作模板
- orcale视图的DML操作
- hive常见的DML操作
- PL/SQL --> DML 触发器
- 创建DML触发器
- DML复合触发器
- oracle DML触发器
- 页面中div的一些问题
- ubuntu下安装tomcat
- 设置分录表格的标题,给分录添加按钮,当标题无法显示全部文字时,可修改参数改变标题控件的长度。
- js新手学习中:js创建div和img并把img插入div中
- 文件的存储
- DML触发器--记录某张表的dml操作
- tar命令详解
- 坠落凡间的struts2(8)---struts2的标签
- 结构化程序设计 和 面向对象程序设计
- nuc700 bootloader使用
- 【Head First设计模式】-Decorator模式
- jquery offset()的对象如果是display:none的,则返回值为0,0
- android 对话框取消和异常变量初始化
- 最长公共子序列|最长公共子串|最长重复子串|最长不重复子串|最长回文子串|最长递增子序列|最大子数组和