将临时表中的数据插入多个相关表中?

时间:2011-10-20 14:47:49

标签: tsql sql-server-2008 stored-procedures cursor set-based

我正在开发一个将数据从Access导入SQL Server 2008的应用程序。目前,我正在使用存储过程按记录单独导入数据。我不能使用批量插入或类似的东西,因为数据被插入到两个相关的表中...我有一堆字段进入帐户表(名字,姓氏等)和三个字段每个都有一个保险表中的记录,通过在存储过程中使用SCOPE_IDENTITY选择的自动递增AccountID链接回Account表。

由于从应用程序到数据库的往返次数,性能不是很好。出于这个原因以及其他一些原因,我打算改为使用临时表并从那里导入数据。阅读我接近这个的选项,一个对登台表中的数据执行相同的插入存储过程的游标是有意义的。然而,似乎游标是邪恶的化身,应该避免。

有没有办法将数据插入到一个表中,检索自动生成的ID,然后在基于集合的操作中使用相应的ID将相同记录的数据插入到另一个表中?或者光标是我唯一的选择吗?

2 个答案:

答案 0 :(得分:3)

查看OUTPUT子句。您应该能够将它添加到INSERT语句中以执行您想要的操作。

BTW,如果您需要将列输出到第二个表中而未插入第一个表中,则使用MERGE而不是INSERT(如原始问题的注释中所建议的那样),因为其OUTPUT子句支持引用其他列来自源表。否则,使用INSERT保持它更直接,并且它确实允许您访问插入的标识列。

答案 1 :(得分:1)

我正在尝试使用数据绑定将多个记录插入到相关表中。所以,试试吧!

希望这非常有用。请点击此链接How to insert record into related tables。了解更多信息。