oracle触发器

触发器作用

1、数据明确。举个例子,扩充工资不可能低于原薪酬。

2、执行复杂的安全性检查。举例,礼拜日禁止退换或新增加多少。

3、做审计,追踪表上所做的多寡操作等。举个例子,操作记录。

4、数据的备份和协办。

行级触发器(FOEvoque EACH ROW)

触发语句成效的每一条记下都被触发。在行级触发器中央银行使old和new伪记录变量,识别值的情景。

创办触发器

  1. CREATE [or REPLACE] T索罗德IGGERubicon 触发器名
  1.   (BEFORE|AFTER)

  2.   (DELETE|INSERT|UPDATE[OF 列名])

  1.   [FOR EACH ROW[WHEN(条件)]]
  1. PLSQL 块

始建贰个非工时不能修改数据的触发器。

  1. --获得当前是几点

  2. to_char(sysdate,'hh24')

  3. --将字符转变为数字

  4. to_number(to_char(sysdate,'hh24'))

  1. --推断非工作时间

  2. not (to_number(to_char(sysdate,'hh24')) between 9 and 17)

  3. --阻止试行

  4. raise_application_error(-三千0,'非做事时间禁止修改数据');

在触发器中截留SQL继续施行的方法,抛出多个谬误。错误号码应该在-两千0到-20999里边,不然提示"错误号参数超过范围"。

  1. create or replace

  2. trigger mytrigger

  3. before insert

  4. on table_001

  5. declare

  6. begin

  7.   if not (to_number(to_char(sysdate,'hh24')) between 9 and 17) then

  1.     raise_application_error(-两千0,'非做事时间禁止更新数据');
  1.   end if;

  2. end;

开创一个充实薪水不可能低于原薪水的触发器。

  1. declare

  2. begin

  3.   if 新工资 < 原工资 then

  4.     raise_application_error(-30001,'薪资无法低于原报酬');

  1.   end if;

  2. end

触发语句与伪代记录变量的值。

触发语句

:old

:new

insert

所有字段都是空(null)

将要插入的数据

update

更新以前该行的值

更新后的值

delete

删除以前该行的值

所有字段都是空(null)

  1. create or replace trigger checkSal
  1. before update

  2. on table_002

  3. for each row

  4. declare

  5. begin

  6.   if :new.sal < :old.sal then

  7.     raise_application_error(-两千1,'涨薪俸不可能低于原薪资');

  1.   end if;

  2. end;

  3. /

查看全部的触发器对象。

  1. select * from user_triggers;

除去触发器。

  1. drop trigger checkSal;  

语句级触发器

在钦定的操作语句操作此前或之后推行一回,不管那条语句影响了多少行。

触发器的花色

说明

数据库触发器是三个与表相关联的、存款和储蓄的PL/SQL程序。每当二个一定的多寡操作语句(insert、update、delete)在钦命的表上发出时,Oracle自动地实践触发器中定义的语句系列。

触发器

本文由开元棋牌发布于数据库,转载请注明出处:oracle触发器

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。