• 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;

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

  • 相关阅读:
    mxd与service的关系
    转到不同磁盘
    通过vs命令提示符注册dll
    粘贴带有行号的代码到vs2010中
    添加本地图层出现要求cross domain policy的错误
    删除服务后添加相同名字的服务注意点
    Silverlight_F5调试时要求安装相应版本的运行时
    网页优化
    SqlBulkCopy快速批量大数据插入
    2012项目总结
  • 原文地址:https://www.cnblogs.com/tv151579/p/2797039.html
Copyright © 2020-2023  润新知