SQL Server:使用外键插入多个表

时间:2018-09-27 22:05:05

标签: sql sql-server

我正在一个项目中跟踪杂货费用。我的下表已经插入了预定义的值:

  • 商店(我们购买食物的地方)
  • 购物者(我或我的妻子)
  • (食品)类别

我还有等待输入的表。

它们是:

  • 收据(一次购物行程,包含多种食品)
  • 食物(每种食物)
  • FoodReceipt(收据和食物之间的桥梁表)

我已经按照自己的需要设置了约束,但是在编写INSERT语句时让我有些茫然,该语句将允许我插入引用其他表中值的新记录。任何想法将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:1)

// jQuery $('#LinkAddress').val("linkaddresshere"); // vanilla JS document.getElementById('LinkAddress').value = "linkaddresshere"; 将为您提供最后一个身份的单个值。虽然在这种情况下可能会很好地工作,但是当您要插入集合时,通常不一定是最好的方法。

我考虑使用SCOPE_IDENTITY子句将插入的项目ID输出到临时表中,然后可以将它们重新连接到后续插入中。

`INSERT INTO ... OUTPUT INSERTED.ID IN TEMPIDs

INSERT INTO other_table内部联接tempID ...`

将其包装在SP中。

https://docs.microsoft.com/en-us/sql/t-sql/queries/output-clause-transact-sql?view=sql-server-2017

答案 1 :(得分:0)

以最后三个表为例,插入接收表并使用ScopeIdentity()函数获取ID(您必须使用身份列作为主键)。对每个食品重复以下操作-插入食品表,使用ScopeIdentity获取主键,然后在FoodReceipt中插入一行,将收据的保存值和当前食品行的保存值保存。