系统事件触发器
系统事件触发器在发生如数据库启动或关闭等系统事件时触发。创建系统事件触发器需要使用ON DATABASE子句,即表示创建的触发器是数据库级触发器,同时创建系统事件触发器需要具有DBA权限。系统事件如下:
LOGOFF 用户从数据库注销
LOGON 用户登录数据库
SERVERERROR 服务器发生错误
SHUTDOWN 关闭数据库实例
例3:
以SYSDBA身份登录,创建table_event:
CREATE TABLE table_event(
event VARCHAR2(30),
time DATE
)
1
然后创建tr_startup触发器和tr_shutdown触发器:
CREATE OR REPLACE TRIGGER tr_startup
AFTER startup ON DATABASE
BEGIN
INSERT INTO table_event VALUES (ora_sysevent,SYSDATE);
END tr_startup;
1
--------------------------------------------------------------------------------
CREATE OR REPLACE TRIGGER tr_shutdown
BEFORE shutdown ON DATABASE
BEGIN
INSERT INTO table_event VALUES (ora_sysevent,SYSDATE);
END tr_shutdown; 1
然后关闭和启动数据库,查看table_event表:
SHUTDOWN 16/02/2015 01:01:02
STARTUP 16/02/2015 01:01:56
说明系统触发器已起作用了。
DDL触发器
DDL触发器由DDL语句触发,如CREATE、ALTER和DROP语句。DDL触发器同样分为BEFORE触发器与AFTER触发器。
触发器的创建
创建触发器需要使用CREATE TRIGGER语句,其语法如下:
CREATE [OR REPLACE] TRIGGER trigger_name
[BEFORE|AFTER|INSTEAD OF] trigger_event
{ON table_name|view_name|DATABASE}
[FOR EACH ROW]
[ENABLE|DISABLE]
[WHEN trigger_condition]
[DECLARE declaration_statements;]
BEGIN
trigger_body;
END [trigger_name];