【问题标题】:Not able to insert data in a table having foreign key using mysql无法使用 mysql 在具有外键的表中插入数据
【发布时间】:2013-01-31 14:28:51
【问题描述】:

我做了两张桌子 第二个表由引用第一个表的主键的外键组成 第二张表由 3 个字段 id(主键)、订单号、fid 组成 我正在使用以下命令

插入table2(订单号,fid) values(1,(select id from table1 where name='abc');

sql语法错误enter code here

【问题讨论】:

  • 完整的错误信息是什么?
  • 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'order no,fid)values(1,(select id from table 2 where name='abc'))' 附近使用正确的语法
  • 我正在使用mysql查询浏览器
  • 因为orderno 之间有一个空格。看我的回答。

标签: mysql sql foreign-keys sql-insert


【解决方案1】:

ORDERreserved word。您必须使用反引号引用它:`order no`

另外,您可能应该使用 MySQL 的 INSERT ... SELECT 语法:

INSERT INTO table2 (`order no`, fld)
SELECT 1,id FROM table1 WHERE name = 'abc'

【讨论】:

  • 是的,谢谢它的工作我犯了什么错误你能告诉我吗??
  • @user1690808:作为@JW。 twicecommented,正如我在上面的回答中所说,你需要引用order no
  • insert into table2 (order no,fid) select 2,id from table1 where name='anubhav';我现在收到以下错误无法添加或更新子行:外键约束失败(table2, CONSTRAINT fid FOREIGN KEY (id) REFERENCES table1 (id))
  • @user1690808:您似乎创建的外键引用不正确;要么你想让fid 引用table1.id,要么你应该将table1.id 插入table2.id
【解决方案2】:

你缺少额外的右括号

insert into table2 (`order no`,fid) 
values(1,(select id from table1 where name='abc' LIMIT 1));

【讨论】:

  • 我在发布我的 qs 时犯了一个错误,我也这样做了,但仍然存在错误
  • 因为orderno 之间有一个空格。已更新。
【解决方案3】:

插入`table2` (`order no`,`fid`) values(1,(select id from table1 where name='abc');

已编辑... 可能是问题所在: 他的错误是Cannot add or update a child row: a foreign key constraint failed (abc/demo1, CONSTRAINT fid FOREIGN KEY (id) REFERENCES demo (id))

应该是 (abc/demo1,CONSTRAINT fid FOREIGN KEY (fid) REFERENCES demo (id))

【讨论】:

  • order 和 table 是 mySQL 的保留字。您不能使用保留字命名列。如果你用括号引用它..如果你已经将你的列命名为 orderno 它会做但你将它命名为order no.. SQL 使用 order 来进行排序.. 不错的冠军..跨度>
  • 好的,我知道了,但是当我使用你的语句时,它给出了一个错误
  • 错误是无法添加或更新子行:外键约束失败(abc/demo1, CONSTRAINT fid FOREIGN KEY (id) REFERENCES demo (id))
  • INSERT INTO table2 (order no, fld) SELECT 1,id FROM table1 WHERE name = 'abc' 当我使用这个语句时它的工作
  • 约束在表 demo 和 demo1 上 .. 而你从 table1 中选择后插入到 table2 中。我错过了什么吗!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多