为什么带有列别名的视图不可插入?

Why view with column alias is not insertable?

CREATE TABLE `projects` (
  `stars` integer, 
  `title` varchar(255)
);

CREATE VIEW projects_view AS SELECT *, title AS name FROM projects;

当我尝试插入内容时:

INSERT INTO `projects_view` (`name`) VALUES ('Name');

我得到:ERROR 1471 (HY000): The target table projects_view of the INSERT is not insertable-into

但这在 PostgreSQL 中有效。

您无法插入,因为使用 select * 您在视图中有 两个 对单个列的引用。

documentation 中无法插入视图

Multiple references to any column of a base table (fails for INSERT, okay for UPDATE, DELETE)

如果您为每一列命名,它应该可以工作:

CREATE VIEW projects_view AS 
SELECT stars, title as name FROM projects;

Fiddle example