2017-04-19 64 views
0

我有一個contact postgres表,contacted_date列。我最近創建了一個contact_date表,該表用於存儲與聯繫人聯繫的每個日期。續訂承諾是否等待postgres觸發完成才能解決?

由於代碼庫經常引用最近的contacted datecontact表,因此我沒有將所有數據遷移出該表。相反,contact_date包含與聯繫人聯繫的給定聯繫人的每個日期,並且該表上的觸發器將更新contact以及每個聯繫人的最新日期。

如果我使用Sequelize對contact_date進行更改,那麼承諾是否等待觸發器的成功完成?還是僅等待成功完成contact_date的更改?

在我的大部分代碼中,這不是一個大問題 - 如果我堅持一個新的聯繫日期,那麼我的代碼已經可以訪問該日期,並且如果需要的話,我可以在其他計算中使用該日期。但是我的測試遇到了困難,可能是因爲競賽狀況。在我的測試中,我使用聯繫人日期創建新聯繫人,並且我的一些測試失敗,可能是因爲承諾在觸發器完成其工作之前解決。

更新:This SO post表示觸發器是同一事務的一部分,這意味着Sequelize承諾在觸發器完成之前不會解決,但如果有人確實知道,我仍然希望聽到確認/確認。

回答

1

我希望你使用transactions爲您的查詢,沒有它,我覺得這是不可能的。

此外,實現您的目標的另一種方法是使用hooks(基本上是應用程序級別的觸發器),而不是在數據庫級別創建觸發器。
由於您可以將事務對象傳遞給鉤子,因此在鉤子下執行的操作將保證是導致鉤子運行的同一事務的一部分。

+0

我在其他地方使用交易,但還沒有在這裏。這是否會導致觸發器的等待完成與未等待的區別? –