0
我有一個更新緩存表的觸發器。 由觸發器執行的功能進行兩項操作:刪除舊緩存行並添加一個基於ID的新緩存行,總數爲Postgresql函數鎖定錯誤
緩存表列:id |總
因爲高水平的服務器活動的,我相信兩個paralles在功能上會生成以下情況要求:
Delete 1 Delete 2 Insert 1 Insert 2 (this will crash because of the primary key)
有沒有什麼辦法可以防止這種情況?交易不應該阻止這種情況(postgresql函數中的隱含交易)
如何pg_try_advisory_lock_shared?,也是他們安全嗎?第二份工作會等到第一份工作完成嗎? – danidacar 2011-12-19 15:11:46
只有當您只會讀取緩存時纔可以使用共享鎖 - 但如果您使用重複讀取,則不需要讀取鎖定 – 2011-12-19 15:56:05