我有一个由几个表组成的视图,所以为了使它可更新,我创建了一个规则。一切正常,除了我有一个UNIQUE字段,有时我有两个在该字段上反转的对象。因此,当我尝试在我的视图上启动更新查询以更正它时,我收到一条错误消息,说明该值已经被删除。
我想一个重要的参数是我使用第三方软件来访问和编辑我的数据库(QGIS),因此我启动的UPDATE查询通常是通过批处理进行的。
我的规则只是这样定义:
CREATE RULE _update AS ON UPDATE TO view DO INSTEAD UPDATE etc...
我理解它的方式规则逐行工作,所以当它尝试申请第一行时会引发错误,因为显然已经采用了这个值(只要另一行没有更新)。是吗?
我猜这是一个非常常见的情况,但我无法弄清楚如何解决它,因为我不是英语母语人士,我也无法找到在线搜索的条款。
解决这个问题的方法是什么?
谢谢。
答案 0 :(得分:1)
如果将唯一索引设置为DEFERRABLE INITIALLY DEFERRED
,则在事务结束之前不会检查它,而不是检查每个更新的行。