我已经阅读了相关的其他问题,但找不到直接答案,所以我希望确认T-SQL中最好(仅限?)的方式来插入父母和多对多的孩子是通过两个单独的陈述在http://sqlfiddle.com/#!18/00180/3
请注意,在我的实际情况中,params包含子表的TVP,而INSERTS在具有TRY-CATCH块的存储过程中。关于后者(和TSQL Try / Catch within Transaction or vice versa?)是一个COMMIT / ROLLBACK有用还是太多开头用于这样简单的事情?
答案 0 :(得分:1)
您不一定必须使用游标,但您必须以某种方式管理identity
字段。如果您尝试同时创建父记录和子记录,那么您需要在父记录中insert
,抓住scope_identity
并提供scope_identity
进入儿童记录。
如果您尝试插入多个父记录和多个子记录,那么您需要更复杂的方案,这需要在您的问题中进行一些额外的描述。可以这样做 - 如果您想在该父表中进行多行插入,并且您正在管理identity_insert on
,则需要identity
明确列(即,在您自己的语句中,而不是依赖identity
属性为您创建它们)。它可以完成,并且有些情况下它不合适(游标在mssql中仍然是可悲的表演者)。
向我们提供更详细的问题(请问问题中的代码 - 那里的代码非常基本,应该在这里进行内联)并让我们看看你真正在问什么。