打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Oracle历程(关于触发器的创建及注意事项)

Oracle历程(关于触发器的创建及注意事项)

定义:

触发器(Trigger)是存储在数据库中的程序,在某一特定事件发生时执行.如相关的表,视图或者数据库动作执行insert,update或delete语句时执行.

作用:

用来增强数据库的安全性,阻止非法事务,加强商务规则,提供审核甚至维护复制表等功能.

示例:

使用触发器提供一个记录pets表发生的所有动作的审计跟踪.所作的动作都记录到log表中.

SQL> descr log;
 名称                                     是否为空类型? 类型
 ----------------------------------------- -------- ----------------------------
 LOG_ID                                    NOT NULL NUMBER
 LOG_TABLE                              NOT NULL VARCHAR2(20)
 LOG_DML                                                 VARCHAR2(20)
 LOG_KEY_ID                                             NUMBER(38)
 LOG_DATE                                               DATE
 LOG_USERNAME                                       VARCHAR2(20)

创建一个序列:

SQL> create sequence LOG_ID_seq;

序列已创建

创建一个触发器,把所有insert,update和delete事件写入log表中:

create or replace trigger trg_pets_upper_pet_kind
      before
      DELETE or INSERT or UPDATE
      on scott.PETS
      for each row

begin
      if INSERTING then
         insert into scott.LOG(LOG_ID,LOG_TABLE,LOG_DML,LOG_KEY_ID,LOG_USERNAME,LOG_DATE)
                    values(LOG_ID_seq.nextval,‘log‘,‘INSERT‘,:new.pet_id,user,sysdate);
      elsif DELETING then
         insert into scott.LOG(LOG_ID,LOG_TABLE,LOG_DML,LOG_KEY_ID,LOG_USERNAME,LOG_DATE)
            values(LOG_ID_seq.nextval,‘log‘,‘DELETE‘,:old.pet_id,user,sysdate);
      else
         insert into scott.LOG(LOG_ID,LOG_TABLE,LOG_DML,LOG_KEY_ID,LOG_USERNAME,LOG_DATE)
            values(LOG_ID_seq.nextval,‘log‘,‘UPDATE‘,:old.pet_id,user,sysdate);
      end if;

 exception
     when others then
         raise_application_error(-20000,‘ERROR trg_pets_upper_pet_kind: ‘ || SQLERRM);

end trg_pets_upper_pet_kind;
/

触发器已创建

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
为oracle主键指定序列编号
oracle ID如何实现自增?
oracle一次插入多条数据(insert all)
Oracle自增列创建方法
数据库触发器应用
oracle 触发器的种类和触发事件,DML触发器,DDL事件触发器,替代触发器,查看触发...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服