我正在尝试合并两个转储文件,如this回答中所述。在创建规则时,我一直在尝试访问OLD
表的NEW
和account
值时遇到问题。
account
架构只是一个表格,其中包含一个名为jsonb
的{{1}}类型的列。 value
列中有两个字段,我想要创建value
规则。以下是我尝试的最新查询和随后的回复:
skip_unique
我尝试了相同的一般查询的多种排列,包括:
CREATE OR REPLACE RULE skip_unique AS ON INSERT TO account WHERE NEW.value->>'opCo' = OLD.value->>'opCo' AND NEW.value->>'customerId' = OLD.value->>'customerId' DO INSTEAD NOTHING;
ERROR: invalid reference to FROM-clause entry for table "old"
LINE 1: ...S ON INSERT TO account WHERE NEW.value->>'opCo' = OLD.value-...
^
HINT: There is an entry for table "old", but it cannot be referenced from this part of the query.
他们都没有因各种原因而工作。
提前感谢您的帮助!
答案 0 :(得分:2)
INSERT触发器上没有OLD变量(或者它是未分配的)。毕竟,通过INSERT,您可以插入新内容,那么您期望OLD持有什么?
OLD
数据类型记录;保存旧数据库行的变量 行级触发器中的UPDATE / DELETE操作。这个变量是 在语句级触发器和INSERT操作中取消分配。
https://www.postgresql.org/docs/current/static/plpgsql-trigger.html
您应该在表中寻找值而不是OLD。