【问题标题】:PostgreSQL 9.4 Updating rule on joined view with conflict on unique constraintPostgreSQL 9.4 更新与唯一约束冲突的连接视图的规则
【发布时间】:2018-05-08 23:36:56
【问题描述】:

我有一个由几个表组成的视图,因此为了使其可更新,我创建了一个规则。一切正常,除了我有一个 UNIQUE 字段,有时我有两个在该字段上反转的对象。因此,当我尝试在我的视图上启动更新查询以更正它时,我收到一条错误消息,指出该值已被采用。

我想一个重要的参数是我正在使用第三方软件来访问和编辑我的数据库(QGIS),所以我启动的 UPDATE 查询通常是由批处理进行的。

我的规则简单定义如下:

CREATE RULE _update AS ON UPDATE TO view DO INSTEAD UPDATE etc...

按照我的理解,该规则逐行起作用,因此当它尝试申请第一行时会引发错误,因为显然该值已被采用(只要另一行尚未更新)。对吗?

我猜这是一个很常见的情况,但我不知道如何解决它,而且由于我不是以英语为母语的人,我也无法找到在线搜索的术语。

有什么办法可以解决?

谢谢。

【问题讨论】:

    标签: postgresql qgis


    【解决方案1】:

    如果您将唯一索引设置为DEFERRABLE INITIALLY DEFERRED,则在事务结束之前不会对其进行检查,而不是针对每个更新的行进行检查。

    【讨论】:

    • 完美,谢谢。不过,有一个细节是,该约束需要初始延迟才能起作用。
    猜你喜欢
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    相关资源
    最近更新 更多