一个完整的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学习论坛上交流。

来源:程式先锋,转载请注明本文来自程式先锋网站 http://www.javabiz.cn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值