2013-04-15 121 views
1

我有一個mysql數據庫,其中條目被添加到顯式事務塊中的兩個相關表中。當事務成功完成(並且只有這樣)時,應通知另一個進程有關新數據。在事務結束後讓MySQL AFTER INSERT觸發器觸發

爲了達到這個目的,我寫了一個UDF,通過IPC通知其他進程。我還在其中一個表上設置了AFTER INSERT觸發器,觸發器調用UDF。

我認爲,觸發器將在事務結束並且實際插入行之後觸發。但是,似乎它在INSERT語句執行後立即執行。

是否有某種方法可以延遲觸發器函數的執行,直到行確實全部插入到db中(即在COMMIT之後)?

我想,解決方法是,在COMMIT之後顯式調用UDF,但自動化方法會更好。

回答

1

看着MySQL文檔,似乎沒有可能定義事務提交後運行的觸發器。

我認爲理由是觸發器通常用於對數據庫進行其他更改,所以您幾乎總是希望它們在事務內部運行以避免數據完整性問題。

看起來像其他數據庫系統(如Oracle)支持這種行爲,但如果您堅持使用MySQL,則必須手動調用您的UDF。

+0

謝謝。是的,我必須爲這個項目使用mysql ..我可以看到爲什麼在事務中運行觸發器通常是個好主意。 – Spike101