版权声明:本文为博主原创文章,未经博主允许欢迎转载,请注明原文链接。一起交流,共同进步。 https://blog.csdn.net/newbie_907486852/article/details/84642930
触发器:自动执行的存储过程
创建触发器语法:
CREATE TRIGGER 触发器名
[before|after|instead of] 触发事件
on 表名或者视图名或者用户名或者数据库名
[for each row] [触发条件表达式]
[declare 变量]
begin
sentences;
end 触发器名;
1、DML触发器
DELETE、INSERT、UPDATE语句前后触发的触发器。
create or replace trigger auth_secure
before insert or update or DELETE
on tb_emp
begin
IF(to_char(sysdate,'DY')='星期日') THEN
RAISE_APPLICATION_ERROR(-20600,'不能在周末修改表tb_emp');
END IF;
END;
2、DDL触发器
ALTER、DROP、CREATER前后触发的触发器。
create table ddl_oper_emp
(
db_obj varchar2(20),
db_obj_type varchar2(20),
oper_action varchar2(20),
oper_user varchar2(20),
opre_date date
);
create or replace trigger tri_ddl
before create or alter or drop
on hr.schema
begin
insert into ddl_oper_emp values(ora_dict_obj_name,ora_dict_obj_type,ora_sysevent,ora_login_user,sysdate);
end tri_ddl;
3、复合触发器
一个触发器中包含四种类型触发器。
4、INSTEAD OF触发器
作用于视图的触发器。
5、用户事件、系统事件触发器
数据库系统事件、用户事件触发的触发器。