在视图返回id上创建插入规则

时间:2014-12-11 14:49:17

标签: sql postgresql view rule sql-returning

我有一个表private.products和一个表示该表的public.products。我想在插入视图时在private.products中创建条目,它一切正常,除了我还要返回插入的id:

CREATE RULE insert_product 
AS ON INSERT TO public.products DO INSTEAD 
INSERT INTO private.products (name) VALUES (new.name) RETURNING products.id;
ERROR:  RETURNING list has too few entries

我做错了什么?

1 个答案:

答案 0 :(得分:0)

the relevant documentation的措辞表明您必须返回与products视图实际拥有的列数相同的列。这是因为规则本身不是查询;它是重写查询的规则。查询可能有自己的RETURNING子句,可以引用任何视图列。您的规则可以重写这些子句,但前提是您指定将每个返回的列重写为的内容。