触发器:
当用户登录/退出或者操作某个数据对象或者进行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;