查看: 1243|回复: 0

[Oracle数据库] Oracle 触发器 trigger

发表于 2018-4-26 08:00:00

触发器:

当用户登录/退出或者操作某个数据对象或者进行DDL(建表,建view)引起某个储存过程的值的变化,把这个隐含被调用的过程,称为触发器。

语法

  1. CREATE OR REPLACE TRIGGER trigger_name
  2. {before|AFTER}
  3. {insert,delete,update of column,column}
  4. on table_name
  5. for each row --表示这是一个行级触发器
  6. when
  7. begin
  8. trigger_body;
  9. end;
复制代码

  

创建触发器

  1. create or replace trigger change_teacher
  2. before insert or update or delete on teachers
  3. begin
  4. if to_char(sysdba,'HH24') not berween '8' and '17' )
  5. THEN
  6. RAISE_APPLICATION_ERROR(-20005,'在非工作时间不能改变教师信息。');
  7. END IF;
  8. END change_teacher;
复制代码

获取新旧表记录对象

  1. create or replace trigger tri_salary
  2. before update on
  3. scott.emp
  4. for
  5. each row
  6. begin
  7. if :new.sal<:old.sal then
  8. dbms_output.put_line('工资不能低于原来工资');
  9. raise_application_error(-20005,'请不要修改');
  10. else
  11. dbms_output.put_line('原来是工资是'||:old.sal);
  12. end;
复制代码

禁用/启用触发器

  1. alter trigger 触发器名 disable(enable);
复制代码

删除触发器

  1. DROP TRIGGER salary_check;
复制代码


回复

使用道具 举报