create or replace trigger testT
AFTER INSERT OR UPDATE OR DELETE ON A
for each row
declare
-- local variables here
begin
IF INSERTING THEN
INSERT INTO b(a,b) VALUES(:NEW.a,:NEW.b);
ELSIF DELETING THEN
DELETE FROM b WHERE a=:OLD.a;
ELSE
UPDATE b SET b=:NEW.b WHERE a=:OLD.a;
END IF;
end testT;
SQL> desc a
Name Type Nullable Default Comments
---- ------------ -------- ------- --------
A VARCHAR2(20) Y
B VARCHAR2(20) Y
SQL> desc b;
Name Type Nullable Default Comments
---- ------------ -------- ------- --------
A VARCHAR2(20) Y
B VARCHAR2(20) Y
SQL> insert into a values('a','b');
1 row inserted
SQL> commit;
Commit complete
SQL> select * from b;
A B
-------------------- --------------------
a b
SQL> update a set b='c' where a='a';
1 row updated
SQL> commit;
Commit complete
SQL> select * from b;
A B
-------------------- --------------------
a c
SQL> delete from a where a='a';
1 row deleted
SQL> commit;
Commit complete
SQL> select * from b;
A B
-------------------- --------------------
SQL>
本文介绍了一种使用Oracle触发器实现两张表数据同步的方法。通过创建一个触发器,在表A进行插入、更新或删除操作时,能自动地将变化同步到表B中,确保两表数据的一致性。
2648





