zoukankan      html  css  js  c++  java
  • PLSQL复合触发器

    复合触发器范例

    create or replace trigger compound_trigger

    for insert or update or delete on dept_x

    compound trigger

    before statement is

    begin

    dbms_output.put_line('1:before statement.');

    end before statement;

    before each row is

    begin

    dbms_output.put_line('2:before each row.');

    end before each row;

    after each row is

    begin

    dbms_output.put_line('3:after each row');

    end after each row;

    after statement is

    begin

    dbms_output.put_line('4:after statement.');

    end after statement;

    end;

    /

    select * from dept_x;

        DEPTNO DNAME   LOC

    ---------- -------------- -------------

    10 ACCOUNTING   NEW YORK

    20 RESEARCH   DALLAS

    30 SALES   CHICAGO

    40 OPERATIONS   BOSTON

    delete dept_x;

    1:before statement.

    2:before each row.

    3:after each row

    2:before each row.

    3:after each row

    2:before each row.

    3:after each row

    2:before each row.

    3:after each row

    4:after statement.

    4 rows deleted.

    复合触发器范例

    create or replace trigger compound_trigger

            for insert or update or delete on dept

            compound trigger

                    before each row is

                    begin

                            if inserting then

                                    if :new.dname is null then

                                            :new.dname:='VDEDU';

                                    END IF;

                                    if :new.loc is null then

                                            :new.loc:='china';

                                    end if;

                            end if;

    end before each row;

    end;

    /

    drop trigger compound_trigger;删除触发器

    创建一个日志表,记录dept表的DML操作

    create table dept_log(logid number,type varchar2(50),logdate date,deptno number,dname varchar2(50),loc varchar2(50));

    create sequence dept_log_seq;

    create or replace trigger dept_update_trigger10

    before insert or update or delete

    on dept

    for each row

    begin

    if inserting then

    insert into dept_log(logid,type,logdate,deptno,dname,loc)

    values(dept_log_seq.nextval,'insert',sysdate,:new.deptno,:new.dname,:new.loc);

    elsif updating then

    insert into dept_log(logid,type,logdate,deptno,dname,loc)

    values(dept_log_seq.nextval,'update',sysdate,:new.deptno,:new.dname,:new.loc);

    else

    insert into dept_log(logid,type,logdate,deptno,dname,loc)

    values(dept_log_seq.nextval,'delete',sysdate,:old.deptno,:old.dname,:old.loc);

    end if;

    end;

    /

  • 相关阅读:
    HDU 4291 A Short problem 第37届ACM/ICPC 成都赛区网络赛1004题 (找规律,取模求循环节)
    POJ 1276 Cash Machine(多重背包)
    HDU 4296 Buildings 第37届ACM/ICPC 成都赛区网络赛1009题 (贪心)
    POJ 2392 Space Elevator (多重背包)
    Mysql配置SSL
    error C2471: cannot update program database vc90.pdb
    Android 总结 转载
    MAX SDK的INode的变换矩阵,以及Object的一些常识
    C++游戏开发需要阅读的书籍
    游戏程序员养成计划
  • 原文地址:https://www.cnblogs.com/kawashibara/p/9047586.html
Copyright © 2011-2022 走看看