2015-05-19 64 views
0

我想在執行一些INSERT操作後調用一些清理過程,並且清理需要很長時間。我的sql客戶端在超時方面有很小的容忍度,所以我希望在命令發佈後立即返回。執行Postgres語句或過程而不等待返回

我試過觸發器 - INSERT觸發存儲過程做清理。問題是,現在INSERT必須等待清理完成才能返回。

我試過調用一個'代理'函數,然後調用實際的清理函數,但似乎Postgres中的函數調用堆棧與其他語言沒有區別。客戶端仍在等待清理。

這種情況下的最佳做法是什麼?謝謝!

+0

在提交後使用'LISTEN'和'NOTIFY'作爲助手守護進程的任務運行清理。 –

回答

0

您將不得不使用外部程序來執行此操作。 PostgreSQL本身不允許你在後臺運行。您可以通過pgAgent或創建自己的程序來處理此問題。您需要向程序發送某種通知,您可以使用這些通知。插入表上有觸發器,或者聽/通知。