我的問題是以下一種:從db2中插入postgresql表trigger
我有一個db2數據庫和一個postgres數據庫。他們在不同的服務器上。每次我將一條新記錄添加到db2表中時,它也應該立即添加到postgresql中。
我在想通過觸發器來做這件事。但我不知道要在它裏面插入什麼postgresql。我讀過也許我可以調用一個外部存儲過程,但我不太確定它是否是我正在尋找的。
在此先感謝!
我的問題是以下一種:從db2中插入postgresql表trigger
我有一個db2數據庫和一個postgres數據庫。他們在不同的服務器上。每次我將一條新記錄添加到db2表中時,它也應該立即添加到postgresql中。
我在想通過觸發器來做這件事。但我不知道要在它裏面插入什麼postgresql。我讀過也許我可以調用一個外部存儲過程,但我不太確定它是否是我正在尋找的。
在此先感謝!
Java存儲過程
是的,你可以創建一個存儲過程,例如在Java中。您可以從觸發器中調用該存儲過程。在Java存儲過程中,您創建了一個到postgresql的連接,並從DB2接收到的值並將其插入到postgres中。我認爲你必須處理兩個連接,一個來自DB2,另一個來自Postgres。
有關於Java存儲過程的許多信息:
聯合會:Postgres的包裝
另一種方法是創建PostgreSQL的一個包裝。目前,IBM通過InfoSphere Federation服務器提供了許多連接器,但對於Postgres和Mysql我沒有任何連接器。 但是,您可以創建自己的包裝。該文件是在這裏:
如果你想爲postgresql包裝器創建一個OpenSource項目,我會有興趣參與。
這兩種方法都要考慮的一件事是如何處理錯誤。我假設postgres插入失敗,那麼DB2插入也應該回滾。對於一個觸發器,也許它應該做'之前插入',這樣整個插入可以中止,如果有postgres問題? – AngerClown 2013-04-08 12:28:37
「插入前」或「插入後」不會影響事務,如果存儲過程在執行過程中發生錯誤時顯示異常/ sqlstate。在這兩種情況下,事務都將在DB2中回滾。 – AngocA 2013-04-08 12:42:19
但是,如果存儲過程包含所有錯誤(try catch),那麼DB2可以提交,但在Postgres中不會有相應的值。 – AngocA 2013-04-08 12:43:12