Oracle 触发器 trigger

  触发器:

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

  语法

  CREATE OR REPLACE TRIGGER trigger_name

  {before|AFTER}

  {insert,delete,update of column,column}

  on table_name

  for each row --表示这是一个行级触发器

  when

  begin

  trigger_body;

  end;

  复制代码

  创建触发器

  create or replace trigger change_teacher

  before insert or update or delete on teachers

  begin

  if to_char(sysdba,'HH24') not berween '8' and '17' )

  THEN

  RAISE_APPLICATION_ERROR(-20005,'在非工作时间不能改变教师信息。');

  END IF;

  END change_teacher;

  复制代码

  获取新旧表记录对象

  create or replace trigger tri_salary

  before update on

  scott.emp

  for

  each row

  begin

  if :new.sal<:old.sal then

  dbms_output.put_line('工资不能低于原来工资');

  raise_application_error(-20005,'请不要修改');

  else

  dbms_output.put_line('原来是工资是'||:old.sal);

  end;

  复制代码

  禁用/启用触发器

  alter trigger 触发器名 disable(enable);

  复制代码

  删除触发器

  DROP TRIGGER salary_check;

  复制代码(编辑:雷林鹏 来源:网络)

posted @ 2018-08-16 09:42  雷林鹏  阅读(158)  评论(0编辑  收藏  举报