1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| --批量生成禁用触发器的语句 SELECT 'ALTER TRIGGER "'||TABLE_OWNER||'"."'||TRIGGER_NAME ||'" DISABLE;' FROM USER_TRIGGERS WHERE STATUS='Y'; --批量生成启用触发器的语句 SELECT 'ALTER TRIGGER "'||TABLE_OWNER||'"."'||TRIGGER_NAME ||'" ENABLE;' FROM USER_TRIGGERS WHERE STATUS='N'; --测试语句 --创建学生表 STUDENT CREATE TABLE STUDENT (ID INT,NAME VARCHAR(10),PHONE VARCHAR(11),CREATE_TIME DATETIME DEFAULT SYSDATE); --创建用户表 USERS CREATE TABLE USERS (ID INT,NAME VARCHAR(10),CREATE_TIME DATETIME DEFAULT SYSDATE); --插入一条数据 INSERT INTO STUDENT VALUES (1,'TEST1','1234567',SYSDATE); INSERT INTO STUDENT VALUES (2,'TEST2','1234567',SYSDATE); INSERT INTO STUDENT VALUES (3,'TEST3','1234567',SYSDATE); INSERT INTO STUDENT VALUES (4,'TEST4','1234567',SYSDATE); INSERT INTO STUDENT VALUES (5,'TEST5','1234567',SYSDATE); COMMIT; --创建 BEFORE 触发器 CREATE OR REPLACE TRIGGER TRG_INS_STU_BEFORE BEFORE INSERT ON STUDENT FOR EACH ROW BEGIN :NEW.ID:=:NEW.ID+1; END; --再次插入一条数据 INSERT INTO STUDENT VALUES (18,'TEST2','12312323',SYSDATE); COMMIT; --创建视图 CREATE VIEW V_STUDENT AS SELECT * FROM STUDENT; --在视图V_STUDENT 上创建 INSTEAD OF 触发器。 CREATE OR REPLACE TRIGGER INS_OF_STUDENT INSTEAD OF UPDATE ON V_STUDENT BEGIN INSERT INTO STUDENT VALUES (21,'TEST21','1234567',SYSDATE); --替换动作 END; --执行UPDATE更新语句 UPDATE V_STUDENT SET ID = 5 WHERE ID=1; COMMIT; SELECT 'ALTER TRIGGER "'||TABLE_OWNER||'"."'||TRIGGER_NAME ||'" DISABLE;' FROM USER_TRIGGERS WHERE STATUS='Y'; SELECT 'ALTER TRIGGER "'||TABLE_OWNER||'"."'||TRIGGER_NAME ||'" ENABLE;' FROM USER_TRIGGERS WHERE STATUS='N';
|