CREATE TABLE tbl_event( event VARCHAR2(20), etime DATE );在建立了事件表event_table之后,就可以在触发器中引用该表了。注意,例程启动触发器和例程关闭触发器只有特权用户才能建立,并且例程启动触发器只能使用AFTER关键字,而例程关闭触发器只能使用BEFORE关键字。
CREATE OR REPLACE TRIGGER tr_startup AFTER STARTUP ON DATABASE BEGIN INSERT INTO tbl_event(event,etime) VALUES (ora_sysevent,SYSDATE); END; / CREATE OR REPLACE TRIGGER tr_shutdown BEFORE SHUTDOWN ON DATABASE BEGIN INSERT INTO tbl_event(event,etime) VALUES (ora_sysevent,SYSDATE); END;3、建立登录和退出触发器
CREATE TABLE tbl_log( username VARCHAR2(20), logon_time DATE, logoff_time DATE, address VARCHAR2(20) );在建立了TBL_LOG表之后,就可以在触发器中引用该表了。注意,登录触发器和退出触发器一定要以特权用户身份建立,并且登录触发器只能使用AFTER关键字,而退出触发器只能使用BEFORE关键字。
CREATE OR REPLACE TRIGGER tr_logon AFTER LOGON ON DATABASE BEGIN INSERT INTO tbl_log(username,logon_time,address) VALUES (ora_login_user,SYSDATE,ora_client_ip_address); END; / CREATE OR REPLACE TRIGGER tr_logoff BEFORE LOGOFF ON DATABASE BEGIN INSERT INTO tbl_log(username,logoff_time,address) VALUES (ora_login_user,SYSDATE,ora_client_ip_address); END;测试:
SQL> conn scott/tiger@orcl; SQL> conn SYSTEM/manager@orcl; SQL> conn SYS/oracle@orcl AS SYSDBA; SQL> SELECT * FROM tbl_log;4、建立DDL触发器
CREATE TABLE tbl_eventddl( event VARCHAR2(20), username VARCHAR2(10), owner VARCHAR2(10), objname VARCHAR2(20), objtype VARCHAR2(10), etime DATE );在建立了表tbl_eventddl之后,就可以在触发器中引用该表了。为了记载DDL事件,应该建立DDL触发器。注意,当建立DDL触发器时,必须要使用AFTER关键字。
CREATE OR REPLACE TRIGGER tr_ddl AFTER DDL ON SCOTT.schema BEGIN INSERT INTO tbl_eventddl(event,username,owner,objname,objtype,etime) VALUES (ora_sysevent,ora_login_user,ora_dict_obj_owner,ora_dict_obj_name,ora_dict_obj_type,SYSDATE); END;测试:
CREATE TABLE tbl_temp( ID INTEGER PRIMARY KEY, NAME VARCHAR2(20) ); DROP TABLE tbl_temp; SELECT * FROM tbl_eventddl;
SELECT trigger_name,status FROM user_triggers WHERE table_name=‘EMP‘;2、禁止触发器
SQL> ALTER TRIGGER tr_check_sal DISABLE;3、激活触发器
SQL> ALTER TRIGGER tr_check_sal ENABLE;4、禁止或激活表的所有触发器
SQL> ALTER TABLE emp DISABLE ALL TRIGGERS; SQL> ALTER TABLE emp ENABLE ALL TRIGGERS;5、重新编译触发器
SQL> ALTER TRIGGER tr_check_sal COMPILE;6、删除触发器
SQL> DROP TRIGGER tr_check_sal;
PL/SQL_触发器5(建立系统事件触发器),布布扣,bubuko.com
原文:http://blog.csdn.net/com185272358/article/details/22099389