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(sysdate,'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-04-15 16:44  彩虹消失了  阅读(374)  评论(2编辑  收藏  举报