触发器

来源:互联网 发布:仓库软件有哪些 编辑:程序博客网 时间:2024/04/28 06:09

触发器(TRIGGER):是用户定义在关系表上的一类由事件驱动的特殊过程

 

定义触发器

CREATE TRIGGER <触发器名>

  {BEFORE | AFTER} <触发事件> ON <表名>

  FOR EACH {ROW | STATEMENT}

  [WHEN <触发条件>]

  <触发动作体>

 

1.表拥有者才可在表上创建触发器,且一个表只能创建一定数量触发器

2.同一模式下触发器名唯一,触发器名和表面必须在同一模式下

3.当一表数据变化,激活定义在该表上相应触发器

4.触发事件:INSERT,DELETE,UPDATE,也可为这几个事件组合,如INSERT OR DELETE

                 UPDATE后可有OF<触发列,...>进一步指明修改哪些列时触发

5.触发器类型:行级触发器(FOR EACH ROW)触发动作遍历全表

                     语句级触发器(FOR EACH STATEMENT)触发动作只发生一次

6.触发条件:条件为真,触发动作体才执行,如WHEN <触发条件>缺省,触发动作体在触发器激活后立即执行

7.触发动作体:可为匿名PL/SQL过程块,也可为调用以创建存储过程

 

CREATE TRIGGER Insert_or_Update_Sal        /*定义触发器*/

  BEFORE INSERT OR UPDATE ON Teacher        /*在Teacher表上定义触发事件*/

  FOR EACH ROW      /*定义一行级触发器*/

  AS BEGIN          /*定义触发动作体,此处为一PL/SQL过程块*/

    IF (new.job = '教授') AND (new.sal < 4000) THEN

      new.sal := 4000;

    END IF;

  END;     

 

激活触发器

 

删除触发器

DROP TRIGGER <触发器名> ON <表名>

DROP TRIGGER Insert_or_Update_Sal ON Teacher;

 

-- 创建触发器create trigger insertTable on [First]after insert,updateasset nocount on update [Second] set [E]=[E]+1-- 删除触发器drop trigger insertTable