用外键插入查询

我有一个数据库中的三个表,他们与外键互相链接。 我想要做一个INSERT查询,以便我可以input数据。 我可以单独插入数据到每个表,但是当使用外键约束时我越来越errors.Here是表格关系和VBAforms,通过我想input数据VBAforms , 关系和数据types

我现在正在使用这两个查询,但第二个是抛出错误。

sql = "insert into T1(ID,FName,Email)values('" & TextBox1.Text & "', '" & TextBox2.Text & "','" & TextBox3.Text & "')" sql = "insert into T2(ID,PhoneNumber,City) Values (Select(ID FROM T1 WHERE FName=" & TextBox2.Text & "),'" & TextBox4.Text & "','" & TextBox5.Text & "')" 

请注意ID是我的表中的主要字段,我将执行search,更新和删除该字段

您在第二个查询中使用的synatx是无效的,您必须使用INSERT INTO .... SELECT ....来编写它,并删除VALUES关键字,如下所示:

 INSERT INTO T2(ID,PhoneNumber,City) SELECT ID,'" & TextBox4.Text & "','" & TextBox5.Text & "' FROM T1 WHERE FName=" & TextBox2.Text & " 

来自'" & TextBox4.Text & "','" & TextBox5.Text & "'的值将被select为string文本,其值来自ID列,这是如何混合从查询中select的值与string文字并插入到另一个表中。

Mahmoud Gamal是正确的,但你必须确保列表中的字段具有相同的types,例如,当字段是数字时不能使用单冒号('),数据库承认它但不正确。 而且您不能将字母数字string发送到数字字段。 最后,您必须确保查询的顺序是正确的,因为外键将级联validation引用。 请原谅我的英语。

对于你的第二个查询,我正在使用VB.NET,因为我之前没有做过VBA编程:

  Dim sql As String = String.Empty sql = "insert into T2(ID,PhoneNumber,City) Values (" '// T2.ID(Number) sql += "Select(ID FROM T1 WHERE FName=" & TextBox2.Text & ")," '// T2.PhoneNumber(Number) '// instead of "'" & TextBox4.Text & "'," remove the single quotes sql += TextBox4.Text & "," '// T2.City(Text) only text need to be enclosed in 'single quotes' sql += "'" & TextBox5.Text & "'" sql += ")" 

你的第二个查询是抛出一个错误,因为你试图插入文本到数据库中的数字列(T2.PhoneNumber)。

包括你的形象:

在这里输入图像说明