为什么带有列别名的视图不可插入?
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;
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;