• oracle触发器简要


    语法讲解------触发器的构建语法

    create [or replace] trigger trigger_name
        before|after
            event1 [ or event2 or event3 …]
                on table_name [for each row]
    begin
        statement;
        …
    end;

    event通常是insert、delete或update等DML操作

    for example:

      1.先创建一张表,用来记录emp2上的操作:

    create table emp2_log(
          uname varchar2(20),
          action varchar2(10),
          atime date
    );

      2.然后创建触发器:

    create or replace trigger trig
          after insert or delete or update on emp2
    begin
          if inserting then
              insert into emp2_log values(USER,'insert',sysdate);
          elsif updating then
              insert into emp2_log values(USER,'update',sysdate);
          elsif deleting then
              insert into emp2_log values(USER,'delete',sysdate);
          end if;
    end;
    概述
    1.触发器分为语句级触发器行级触发器
    2.语句级触发器是指每执行一条DML语句,该触发器就执行一次
    3.行级触发器是指每个DML操作影响几条记录,就会触发几次
    4.行级触发器中由于涉及到了每条记录的数据变动,所以对于每条记录的数据来说就有新值和旧值之分:
     用关键字:NEW:OLD来代表新的记录和旧的记录(可用于制作自增长ID)。
    for example:

    解决完整性外键约束的例子:

    1.由于数据完整性所以执行:

    update dept set deptno = 99 where deptno = 10;
    时因为emp表中的外键关系所以报外键的错误。
    2.可以使用触发器顺利执行:
    create or replace trigger trig
          after update on dept  for each row
    begin
          update emp set deptno =:NEW.depno where deptno = :OLD.deptno;
    end;

    因为触发器执行完毕后,数据库才会检查完整性的约束条件。

  • 相关阅读:
    setTimeout 理解
    Git 使用规范流程
    JavaScript异步编程 ( 一 )
    javaScript模块化一
    javascript 知识点坑
    javaScript闭包
    函数式编程
    JavaScript的68个技巧一
    MySql 隐式转换
    MySQL优化
  • 原文地址:https://www.cnblogs.com/tv151579/p/2797039.html
Copyright © 2020-2023  润新知