Oracle初探(八)

来源:互联网 发布:日立有挖机软件吗 编辑:程序博客网 时间:2024/06/07 00:03
触发器和条件谓词,笔记为:
------------触发器/*      create  or replace trigger 名称      after/before insert/update/delete on emp      begin              end;      开启触发器      insert/update/delete操作*/set serveroutput on;create  or replace trigger trigger_addafter insert on empbegin      dbms_output.put_line('boom shakalaka!!');end;/insert emp value(1001);create  or replace trigger trigger_t1before delete on empbegin      if to_char(sysdate,'day') in ('星期四','星期日') then         raise_application_error(-20001,'今天是周末,数据库要休息!!');      end if;end;--------------条件谓词:可以同时执行dml所有操作    ----监控emp表的操作(编号、操作人,操作时间、操作动作)create table emp_log(       log_id number(8) primary key,       username varchar2(20),       op_date date,       op_content varchar2(20));create sequence seq_id;create  or replace trigger trigger_logafter insert or delete or update on empdeclare    v_content varchar2(20);begin      case        when inserting then v_content :='增加';        when deleting then v_content :='删除';        when updating then v_content :='更新';      end case;      insert into emp_log values(seq_id.nextval,user,sysdate,v_content);    end;/----------------old、new-------------删除表中的数据,然后通过触发器提供的伪表方式来进行备份操作  (t1表做为示例)-------update操作old、new表 :new、:old (同步备份)-------delete操作old表     :old (要备份)-------insert操作new表     :new (不用备份)create table t1(tid number(8),tname varchar2(20));---1、创建一张伪表create table copyt1 as select * from t1 where 1<>1;--2、创建数据备份的触发器 create or replace trigger trigger_copyt1after delete   on t1for each rowbegin   --当t1表中的数据被删除,则往copyt1表中插入被删除的数据   insert into copyt1 values (:old.tid,:old.tname);end;/  -----------------------------修改数据,备份表数据同步更新create or replace trigger trigger_copyt2after update   on t1for each rowbegin  --当源表直接更新,则备份表数据同步更新   update copyt1 set tname = :new.tname where tid = :old.tid;end;/

0 0
原创粉丝点击