假设我有下表:
CREATE TABLE item (id int PRIMARY KEY, name text, price numeric);
我能够运行诸如
的查询SELECT COUNT(*), id, name, price FROM item GROUP BY id;
我假设因为id
是表的主键,即使name
子句中没有price
和GROUP BY
。
现在假设我这样在item
表上创建一个视图:
CREATE VIEW item_view AS SELECT * from item;
如果我尝试针对此视图运行相同的查询,那么它将无法正常工作:
SELECT COUNT(*), id, name, price FROM item_view GROUP BY id;
错误:列“ item_view.name”必须出现在GROUP BY子句中或在聚合函数中使用
我认为这是因为item_view
视图不遵守其基础item
表的主键约束。
我想我在这里有两个问题: