Oracle数据库中的触发器(2)

系统事件触发器
系统事件触发器在发生如数据库启动或关闭等系统事件时触发。创建系统事件触发器需要使用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];

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/2af116bc40f95b85794280ee69768bf5.html