一、触发器的概述
1、含义
- 制定一个规则,在我们做增删改操作的时候,只要满足该规则,自动触发,无需调用。
2、触发器分类
- 语句级触发器:不包含有for each row的触发器。
- 行级触发器:包含有for each row的就是行级触发器。
注意:
- 加for each row是为了使用:old或者:new对象或者一行记录;
- :new --为一个引用最新的列值;:old --为一个引用以前的列值;
二、创建触发器
1、语法结构
CREATE [or REPLACE] TRIGGER 触发器名
{BEFORE | AFTER}
{DELETE | INSERT | UPDATE [OF 列名]}
ON 表名
[FOR EACH ROW [WHEN(条件) ] ]
begin
PLSQL 块
End 触发器名;
2、语句级触发器实例
create or replace trigger t1
after
insert
on person
declare
begin
dbms_output.put_line('一个新员工入职');
end;
3、行级触发器实例
create or replace trigger t2
before
update
on emp
for each row
declare
begin
if :old.sal>:new.sal then
raise_application_error(-20001, '不能给员工降薪');
end if;
end;
三、使用触发器
1、启用触发器
- 启用所有触发器:ALTER TRIGGER <触发器名> ENABLE ALL TRIGGERS
- 重新启用触发器:ALTER TRIGGER <触发器名> ENABLE
2、禁用触发器
- 禁用某个触发器:ALTER TRIGGER <触发器名> DISABLE
- 禁用所有触发器:ALTER TRIGGER <触发器名> DISABLE ALL TRIGGERS
3、删除触发器
DROP TRIGGER <触发器名>