MySQL视图上的Concat函数

时间:2015-05-18 07:49:42

标签: mysql views concat

对于包含字段' 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不是   插入-成

但错误表明该视图不可插入。我做错了什么?

2 个答案:

答案 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;