对于包含字段' fname'的表格和' lname',我创建了一个带有字段' name'的视图。这是一个' fname'和' lname'。
我想在此视图中插入字符串' firstname lastname'插入字段' name'这个视图并自动更新为' firstname'和'姓氏'在字段' fname'和' lname'父表的。
create view emp_view as
-> select id,concat(fname,' ', lname) as name, email
-> from employee;
insert into emp_view
-> values(1911,'xyz abc','abc@xyz.com');
错误1471(HY000):INSERT的目标表emp_view不是 插入-成
但错误表明该视图不可插入。我做错了什么?
答案 0 :(得分:0)
引用view updatability上的文档:
视图列必须是简单的列引用。他们不能是表达......
因此,在您的示例中,concat使其成为不可更新的视图。
这是有道理的,如果你将一个字符串传递给" name",MySQL怎么能弄清楚如何将字符串分配给字段" fname"和" lname"?
答案 1 :(得分:-1)
您无法在视图上插入数据。视图是纯粹的SELECT
。您必须将数据插入VIEW
正在使用的表中。
INSERT INTO employee (Id,fname,lname,Email) VALUES(1911,'Firstname','LastName','abc@xyz.com');
你像这样显示数据。
SELECT * FROM emp_view;
VIEW
只会运行语法
SELECT id,concat(fname,' ', lname) as name,email FROM employee;