1. 程式人生 > >二十三、觸發器:自動執行的儲存過程

二十三、觸發器:自動執行的儲存過程

                                       觸發器:自動執行的儲存過程

建立觸發器語法:

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、使用者事件、系統事件觸發器

資料庫系統事件、使用者事件觸發的觸發器。