1 --創建測試表B_TEST_TABLE,稍后會在本表上增加觸發器,在插入本表的同時復制一份數據到B_TEST_TABLE2中 2 create table B_TEST_TABLE 3 ( 4 c1 VARCHAR2(200), 5 d2 DATE 6 ); 7 8 --創建B_TEST_TABLE2表,在插入B_TEST_TABLE數據時,復制一份數據到本表中 9 create table B_TEST_TABLE2 10 ( 11 c1 VARCHAR2(200), 12 d2 DATE 13 ); 14 15 --創建存儲過程,往B_TEST_TABLE2中插入一條數據 16 create or replace procedure TestPro(C1 VARCHAR2) is 17 begin 18 INSERT INTO B_TEST_TABLE2 VALUES (C1, SYSDATE); 19 --因為此存儲過程是觸發器中調用的,所以不能增加提交命令 20 --COMMIT; 21 end TestPro; 22 --下面這個斜杠不能去掉,否則會導致觸發器和存儲過程或其他腳本編譯在同一個對象中,每個單獨的對象都應用此符號分開(建表等操作除外) 23 / 24 --創建觸發器,before insert on b_test_table為在插入b_test_table數據之前觸發,可以改成after insert on b_test_table 25 --或者before update on b_test_table等選項 26 create or replace trigger TEST_TABLE_TRIGGER_INST_BF 27 before insert on b_test_table 28 for each row 29 begin 30 --調用存儲過程:new代表的是新的記錄對象,可以直接取值或修改該記錄的每一列,:new.c1是取新紀錄的c1列值,:new.d2是取新紀錄的d2列值 31 TestPro(:new.c1); 32 --如果不想用存儲過程也可以直接這樣寫 33 --INSERT INTO B_TEST_TABLE2 VALUES (:new.c1, :new.d2); 34 end TEST_TABLE_TRIGGER_INST_BF; 35 / 36 --插入測試數據 37 insert into B_TEST_TABLE values ('1', sysdate); 38 commit; 39 40 --查詢測試表數據 41 select * from B_TEST_TABLE; 42 select * from B_TEST_TABLE2;
轉載於:https://blog.csdn.net/weixin_34345753/article/details/91978948