/*
有的情况下可能需要临时禁用触发器,比如他引用的数据库对象已经失效,或者需要执行大量的数据操作
此时不希望触发器工作,以避免造成延时等等
ALTER TRIGGER
<触发器名>
DISABLE; 禁用某个触发器
ALTER TRIGGER
<触发器名>
ENABLE; 启用某个触发器
ALTER TABLE
<表名>
DISABLE ALL TRIGGERS; 禁用表上的所有的触发器
ALTER TABLE
<表名>
ENABLE ALL TRIGGERS; 启用表上的所有的触发器
*/
--创建表和触发器
DROP TABLE TESTLOG;
DROP TRIGGER MYLOGONTRIGGER;
DROP TRIGGER MYLOGOFFTRIGGER;
--创建表TESTLOG
CREATE TABLE TESTLOG(
USERNAME VARCHAR2(100),
EVENTTIME DATE,
ACTION VARCHAR2(20)
);
--触发器,用于记录用户的登录事件
CREATE OR REPLACE TRIGGER MYLOGONTRIGGER
AFTER LOGON ON SCHEMA
BEGIN
INSERT INTO TESTLOG
VALUES(
USER,
SYSDATE,
'
LOGON'
);
END;
/
--触发器,用户记录用户的注销事件
CREATE OR REPLACE TRIGGER MYLOGOFFTRIGGER
BEFORE LOGOFF ON SCHEMA
BEGIN
INSERT INTO TESTLOG
VALUES(
USER,
SYSDATE,
'
LOGOFF'
);
END;
/
/*测试使该触发器失效和生效*/
ALTER TRIGGER MYLOGONTRIGGER DISABLE;
ALTER TRIGGER MYLOGONTRIGGER ENABLE;
ALTER TABLE TESTLOG DISABLE ALL TRIGGERS;
ALTER TABLE TESTLOG ENABLE ALL TRIGGERS;