表與表之間的同步——觸發器(Oracle)
阿新 • • 發佈:2019-02-15
--建立測試表
CREATE TABLE test(
ID VARCHAR2(15),
NAME VARCHAR2(15)
);
--建立記錄測試表
CREATE TABLE test_log(
ID VARCHAR2(15),
NAME VARCHAR2(15)
);
CREATE OR REPLACE TRIGGER trgdemo
AFTER INSERT OR UPDATE OR DELETE
ON TEST FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO test_log VALUES (:new.ID,:new.NAME);
ELSIF UPDATING THEN
update test_log SET NAME = :new.NAME WHERE ID=:new.ID;
ELSIF DELETING THEN
delete test_log where ID = :old.ID;
END IF;END;
--下面我們來分別執行DML語句
INSERT INTO test VALUES('zhang','a');
INSERT INTO test VALUES('wang','b');
INSERT INTO test VALUES ('li','c');
INSERT INTO test VALUES('zhao','d');
UPDATE test SET NAME = 'A' WHERE ID = 'zhang';
UPDATE test SET NAME = 'B' WHERE ID = 'wang';
UPDATE test SET NAME = 'C' WHERE ID = 'li';
UPDATE test SET NAME = 'D' WHERE ID = 'zhao';
DELETE test WHERE ID = 'zhang';
DELETE test WHERE ID = 'li';
--然後檢視效果
SELECT * FROM test;
SELECT * FROM test_log;