【发布时间】:2010-10-19 15:39:49
【问题描述】:
我正在使用 Django + Postgresql 开发一个系统。这是我第一次使用 postgresql,但我选择它是因为我需要事务和外键功能。
在某个视图中,我必须使用 AccessExclusiveLock 锁定我的表,以防止在此视图期间进行任何读取或写入。那是因为我在保存/更新我的实体之前对整个数据进行了一些检查。
我注意到不时发生不一致的错误。这是因为 select 语句直接发生在 lock 语句之后。它要求有 AccessShareLock。我在 postgresql website 上读到 AccessShareLock 与 AccessExclusiveLock 冲突。
我不明白为什么会发生这种情况。如果 postgresql 已经有一个覆盖隐式锁的显式锁,为什么它会要求隐式锁?我不明白的第二件事是为什么这个视图在 2 个不同的 postregsql 进程上运行?它们不应该在一次交易中收集吗?
提前感谢。
【问题讨论】:
-
您能否提供导致此问题的示例?例如一个工作示例。
-
有点 OT:不要使用“developer.postgresql.org”上的文档 - 下一个尚未发布的 Postgres 版本。
-
@StarShip3000 恐怕我做不到。专有废话。
-
伪代码或工作代码示例,可以模仿您的代码而没有专有废话。
标签: django postgresql