在Oracle数据库上触发将数据插入Mysql数据库

时间:2016-12-19 09:51:23

标签: php mysql database oracle laravel-5

请问我有一个严重的问题,因为现在已经一个星期了,并且不知道该怎么做。 我在生产服务器上有一个oracle 10g数据库,在另一台服务器上有一个Mysql数据库。我必须创建一个触发器,在插入oracle数据库的特定表之后执行该操作,插入的新行是copy并插入到具有相同结构的mysql数据库中。

我编写了以下oracle触发器,但我不知道如何从oracle触发器连接到Mysql数据库。

CREATE OR REPLACE TRIGGER get_trans AFTER INSERT ON "TABLE" 
    FOR EACH ROW
CALL sendTrans(:new.cust_id, :new.acid, :new.foracid, :new.pstd_date, :new.value_date, :new.tran_id, :new.part_tran_type, :new.tran_amt, :new.clr_bal_amt, :new.tran_particular, :new.sol_id);

CREATE [OR REPLACE] PROCEDURE sendTrans(cust_id IN INT, acid IN VARCHAR2, foracid IN VARCHAR2, pstd_date IN Datetime, value_date IN Datetime, tran_id IN INT, part_tran_type IN CHAR, tran_amt IN NUMERIC, clr_bal_amt IN NUMERIC, tran_particular IN VARCHAR2, sol_id IN INT)
AS
    INSERT INTO TEMPORALTRANSACTIONTABLE (CUST_ID, ACID, FORACID, PSTD_DATE, DATETIME, VALUE_DATE, TRAN_ID, PART_TRAN_TYPE, TRAN_AMT, CLR_BAL_AMT, TRAN_PARTICULIER, SOL_ID) VALUES (cust_id , acid, foracid, pstd_date, value_date, tran_id, part_tran_type, tran_amt, clr_bal_amt, tran_particular, sol_id)
BEGIN

END sendTrans;

1 个答案:

答案 0 :(得分:0)

根据您的设置(平台,数据库版本),实施可能会有所不同,但从概念上讲,您需要做的是:

1)创建从Oracle到MySQL的数据库链接。

2)通过数据库链接访问MySQL数据库中的表。

您在触发器中的插入语句将如下所示:

INSERT INTO TEMPORALTRANSACTIONTABLE@<YOUR_DATABASE_LINK> (...)

创建连接和工作数据库链接可能证明是一项棘手的任务。