一个简单的Oracle触发器示例
本文通过示例描述Oracle中的触发器的写法,旨在描述一个简单记录监控日志的的触发器的写法。希望对初学者能有帮助.
1. 准备工作:
1) 创建一张表,在SQLplus控制台执行如下脚本: CREATE TABLE PRODUCT ( "ID" VARCHAR(10) NOT NULL, "NAME" VARCHAR(10) NOT NULL, "PRICE" NUMBER(10), PRIMARY KEY("ID") ); 2) 插入一些测试数据,在SQLplus控制台执行如下脚本:
INSERT INTO PRODUCT(ID,NAME,PRICE) VALUES('1','CAT',50); INSERT INTO PRODUCT(ID,NAME,PRICE) VALUES('2','DOG',25); INSERT INTO PRODUCT(ID,NAME,PRICE) VALUES('3','FISH',42); INSERT INTO PRODUCT(ID,NAME,PRICE) VALUES('4','PIGEON',34); 2. 创建一张表,在SQLplus控制台执行如下脚本:
create table product_update_log ( id number(5) not null, username varchar(10), operation varchar(6), operatetime date, primary key(id) ); 3.创建一个序列,在SQLplus控制台执行如下脚本:
create sequence logsequence start with 1 maxvalue 999; 4.创建一个触发器,在SQLplus控制台执行如下脚本:
create or replace trigger product_log after insert or update or delete on product declare operation product_update_log.operation%TYPE; begin if inserting then operation := 'insert'; elsif updating then operation := 'update'; elsif deleting then operation := 'delete'; else operation := 'unknown'; end if; dbms_output.put_line(operation); insert into product_update_log values(logsequence.nextval,user,operation,sysdate); dbms_output.put_line('success'); end; / 5. 测试 update PRODUCT set price=24 where id=3; 这时控制台输出: update success 然后在SQLPlus去查询product_update_log表中内容,发现应该多了一条记录: ID USERNAME OPERATION OPERATETIME ---------- -------------------- ------------ -------------- 1 SYSTEM update 30-04-08 这说明我们的触发器起了作用,以后只要是对product表有insert,update或者delete操作动作的,Oracle数据库服务会自动记录一条记录在这张表中。
到这里全部完成了,如果读者有问题的话,欢迎到程式先锋Java学习论坛上交流。 来源:程式先锋,转载请注明本文来自程式先锋网站 本文出自 51CTO.COM技术博客 |


java_lina
博客统计信息
热门文章
最新评论
友情链接