在MySQL中插入视图中的行时出错
我想在视图中插入一行。在这样做时,我得到了一个错误。如何解决此错误? 这是我的密码:在MySQL中插入视图中的行时出错,mysql,Mysql,我想在视图中插入一行。在这样做时,我得到了一个错误。如何解决此错误? 这是我的密码: CREATE OR REPLACE VIEW DETAILS AS SELECT null as pSerial_number, null as pname,NULL AS additional_field1 from student; insert into details (pSerial_number,pname,additional_field1) values (priya,41); 错误:错误
CREATE OR REPLACE VIEW DETAILS
AS
SELECT null as pSerial_number, null as pname,NULL AS additional_field1
from student;
insert into details (pSerial_number,pname,additional_field1) values (priya,41);
错误:错误代码:1348。“pSerial_number”列不可更新
注意:我在视图中添加的所有列都不在表中。如注释中所述,您不能使用
insert
命令将列添加到视图中。insert
命令将数据插入表中。视图是select命令的投影,因此要在视图中插入柱,需要更改视图。因此,它应该是:
create or replace view details
as
SELECT null as pSerial_number,
null as pname,
NULL AS additional_field1
from student;
这足以将附加_字段1
添加到该视图中
这里的问题是您的视图毫无意义,因为它将student
表中的所有行都列为这三个手动字段的nulls
例如,假设student
表的结构是
serial_number varchar,
name varchar,
additional_field1 int
其中的值为:
serial_number name additional_field1
AD5424 Test1 1
AD5421 Test2 2
AD5422 Test3 3
如果您运行上述代码(创建视图),然后对其运行select
语句,如select*from details
,您将收到以下响应:
serial_number name additional_field1
null null null
null null null
null null null
因此,您可以将视图相应地映射到表列,如下所示:
create or replace view details
as
SELECT serial_number as pSerial_number,
name as pname,
additional_field1 AS additional_field1
from student;
现在,如果您在其上运行select
语句select*from details
,您将得到:
pSerial_number pname additional_field1
AD5424 Test1 1
AD5421 Test2 2
AD5422 Test3 3
请注意student表的列名称和值
我希望这有助于澄清什么是视图以及如何更改视图。您不能在视图输出中添加列。使用
SELECT*fromDetails交叉连接(选择{值和列名列表})代码>。您的values
子句(2)中的值金额与列列表(3)中的列金额不匹配。