我正在使用Django + Postgresql开发一个系统。虽然这是我第一次使用Postgresql,但我选择它是因为我需要事务和外键功能。
在某个视图中,我必须使用AccessExclusiveLock锁定我的表,以防止在此视图期间进行任何读取或写入。这是因为在保存/更新实体之前,我会对整个数据进行一些检查。
我注意到有时会出现不一致的错误。这是由于在锁定语句之后直接发生的select语句。它要求具有AccessShareLock。我在Postgresql的网站上阅读到AccessShareLock与AccessExclusiveLock冲突。
我不明白的是为什么会发生这种情况。如果已经有覆盖该隐式锁的显式锁,为什么Postgresql还会要求隐式锁呢?我不理解的第二件事是为什么这个视图在2个不同的postregsql进程上运行?它们不应该被收集在单个事务中吗?
谢谢。
在某个视图中,我必须使用AccessExclusiveLock锁定我的表,以防止在此视图期间进行任何读取或写入。这是因为在保存/更新实体之前,我会对整个数据进行一些检查。
我注意到有时会出现不一致的错误。这是由于在锁定语句之后直接发生的select语句。它要求具有AccessShareLock。我在Postgresql的网站上阅读到AccessShareLock与AccessExclusiveLock冲突。
我不明白的是为什么会发生这种情况。如果已经有覆盖该隐式锁的显式锁,为什么Postgresql还会要求隐式锁呢?我不理解的第二件事是为什么这个视图在2个不同的postregsql进程上运行?它们不应该被收集在单个事务中吗?
谢谢。