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