【问题标题】:INSERT INTO table that contains foreign keyINSERT INTO 包含外键的表
【发布时间】:2025-01-11 05:35:02
【问题描述】:

我正在尝试将值插入一个名为Division 的表中,它有一个来自表Departement 的名为id_dep 的外键。问题是由于外键,我无法将值插入Division 表。我搜索了互联网,发现我不能直接将值插入外键,而是通过Select。我做了一些更改,我的命令如下所示:

string req = "INSERT INTO DIVISION VALUES(SELECT id_dep FROM Departement WHERE libelle='"+dep+"','" + id + "','" + lib + "')";

现在我遇到了一个关于语法错误的问题。如何解决?

【问题讨论】:

  • 在此处粘贴语法错误..
  • where 子句中有多个逗号。按照您的预期写出一份 sql 副本。
  • 这里是语法错误“Erreur de syntaxe.dans l'expression 'SELECT id_dep FROM Departement WHERE libelle='Informatique''。”
  • 我注意到您的上述陈述中有很多错误。首先是 Where 子句用逗号分隔(在 WHERE 中,您始终使用 and/or/Like 运算符。其次,在 INSERT 中使用 SELECT 您永远不需要关键字“VALUES”,而是您必须选择要插入的列。

标签: c# mysql sql winforms


【解决方案1】:

使用INSERT INTO...SELECT 语法,

INSERT INTO DIVISION (colName, colName2, colName3)
SELECT id_dep, @id, @lib
FROM Departement
WHERE libelle = @dep

始终对查询进行参数化以避免 sql 注入。

【讨论】:

  • @user3533921,这不是答案吗?您没有将其标记为答案的问题有什么问题?