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