この図は、2つのレプリケーション・サイト(サイトAとサイトB)を示しています。サイトAでは、次の更新が実行されます。
UPDATE employees SET department_id = 20 WHERE last_name='Jones';
この図にあるemployees表では、Jonesという姓の社員のdepartment_idが20に更新されています。
サイトAでは、この更新が実行されると、内部トリガーが起動します。内部トリガーのコードは、次のようなコードです。
if updating
update@dba1(oldargs newargs)
update@dba2(oldargs newargs)
if inserting
insert@dba1(newargs)
insert@dba2(newargs)
if deleting
delete@dba1(oldargs)
delete@dba2(oldargs)
サイトA上の内部トリガーによって、サイトB上のパッケージが起動されます。このパッケージによってサイトBのemployees表が更新され、Jonesという姓の社員のdepartment_idが20に設定されます。
このパッケージのコードは、次のようなコードです。
update(oldargs newargs)
UPDATE employees ...
insert(newargs)
INSERT INTO employees ...
delete(oldargs)
DELETE FROM employees ...