我有一项任务,我可以真正使用一些关于触发器的帮助。所以这就是它。我有数据库1和2让我们称它们为db1和db2。我现在有一个名为tbl_client_contact的表。我想要做的是创建一个触发器,它将在2个数据库中存在的所述表中插入,更新或删除。例如,我将在db1中的表中插入值,我应该期望这些值插入到db 2中的表中。我说得对,但问题是当我去做db2并进行操作时,我无法使在db 2中的表中插入的值将出现在db 1的表中,而不会发生类似无限循环的插入等。
CREATE OR REPLACE TRIGGER "CISTEST"."TRG_SYNC_CLIENT_CONTACT"
AFTER INSERT OR UPDATE OR DELETE ON TBL_CLIENT_CONTACT
FOR EACH ROW
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
IF :NEW.source IN ('CIS','CIC') THEN
IF INSERTING THEN
INSERT INTO tbl_client_contact@CVLTEST
(seq_id,client_id,contact_type_id,contact_no,default_tag,
source,status_id,post_by,post_date,last_update_by,
last_update)
VALUES
(:NEW.seq_id,:NEW.client_id,:NEW.contact_type_id ,:NEW.contact_no,:NEW.default_tag,
:NEW.source,:NEW.status_id,:NEW.post_by,:NEW.post_date,:NEW.last_update_by,
:NEW.last_update);
COMMIT;
ELSIF UPDATING THEN
UPDATE tbl_client_contact@CVLTEST
SET contact_type_id = :NEW.contact_type_id,
contact_no = :NEW.contact_no,
default_tag = :NEW.default_tag,
source = :NEW.source,
status_id = :NEW.status_id,
last_update_by = :NEW.last_update_by,
last_update = :NEW.last_update
WHERE seq_id = :OLD.seq_id;
COMMIT;
ELSIF DELETING THEN
DELETE FROM tbl_client_contact@CVLTEST
WHERE seq_id = :OLD.seq_id;
COMMIT;
END IF;
END IF;
END;
我在db 2中也有一个几乎相同的触发器。问题是,当我在db 2中禁用触发器时,db 1中的触发器工作正常。但是当我在db2中启用触发器时,我想要的输出就不起作用了。帮助任何人?