使用@@ IDENTITY插入父母子女

时间:2018-02-22 23:54:12

标签: sql-server parent-child identity

我已经阅读了相关的其他问题,但找不到直接答案,所以我希望确认T-SQL中最好(仅限?)的方式来插入父母和多对多的孩子是通过两个单独的陈述在http://sqlfiddle.com/#!18/00180/3

请注意,在我的实际情况中,params包含子表的TVP,而INSERTS在具有TRY-CATCH块的存储过程中。关于后者(和TSQL Try / Catch within Transaction or vice versa?)是一个COMMIT / ROLLBACK有用还是太多开头用于这样简单的事情?

1 个答案:

答案 0 :(得分:1)

您不一定必须使用游标,但您必须以某种方式管理identity字段。如果您尝试同时创建父记录和子记录,那么您需要在父记录中insert,抓住scope_identity并提供scope_identity进入儿童记录。

如果您尝试插入多个父记录多个子记录,那么您需要更复杂的方案,这需要在您的问题中进行一些额外的描述。可以这样做 - 如果您想在该父表中进行多行插入,并且您正在管理identity_insert on,则需要identity明确列(即,在您自己的语句中,而不是依赖identity属性为您创建它们)。它可以完成,并且有些情况下它不合适(游标在mssql中仍然是可悲的表演者)。

向我们提供更详细的问题(请问问题中的代码 - 那里的代码非常基本,应该在这里进行内联)并让我们看看你真正在问什么。