2015-05-28 76 views
2

我在遠程機器上有一個數據庫。假設db1http://example.com。我的意思是這個數據庫不在我的本地機器上,但我可以通過一個URL連接它。如何通過MySQL觸發器執行外部java函數?

我希望每當db1.table1上發生某些更新時,觸發器會在本地機器上的JAVA應用程序中調用一個函數來執行一些處理。

我找到了解決辦法here,但它需要有在同一臺機器上的Java函數,你有因爲該行的MySQL服務器

SET result = sys_exec('/path/to/javabin -jar your.jar'); 

我怎能捨棄的IP地址我機器而不是pathlib_mysqludf_sys庫或像這樣的其他庫?

+0

你能做到嗎? – sergioBertolazzo

+0

在查詢中, –

回答

1

DB服務器獲得對錶的修改。假設你有php包裝,並且你從調用中知道插入/更新在tranaction級別成功,所以使用php/jms組合來添加到jms隊列(activemq等等同樣的東西)。如果它不是PHP,而是db處理插入/更新的db服務器端java中間件,那麼同樣的處理。

現在你的機器(而不是數據庫服務器)上u有你的Java應用程序持續運行,它是在偷看遠程JMS

你可以用插座也當然做到這一點。

我會使用觸發器作爲避免回滾的最後手段,因爲他們說,你試圖回叫導彈(也就是說,你的本地機器有時可能會處理與回滾相關的數據)。這些是在面臨的狹窄範圍內可能不相關的一般性(回滾)

此外不是觸發器/ udf/exec的忠實粉絲。所以我傾向於排隊

相關問題