我正在开发一个将数据从Access导入SQL Server 2008的应用程序。目前,我正在使用存储过程按记录单独导入数据。我不能使用批量插入或类似的东西,因为数据被插入到两个相关的表中...我有一堆字段进入帐户表(名字,姓氏等)和三个字段每个都有一个保险表中的记录,通过在存储过程中使用SCOPE_IDENTITY选择的自动递增AccountID链接回Account表。
由于从应用程序到数据库的往返次数,性能不是很好。出于这个原因以及其他一些原因,我打算改为使用临时表并从那里导入数据。阅读我接近这个的选项,一个对登台表中的数据执行相同的插入存储过程的游标是有意义的。然而,似乎游标是邪恶的化身,应该避免。
有没有办法将数据插入到一个表中,检索自动生成的ID,然后在基于集合的操作中使用相应的ID将相同记录的数据插入到另一个表中?或者光标是我唯一的选择吗?
答案 0 :(得分:3)
查看OUTPUT子句。您应该能够将它添加到INSERT语句中以执行您想要的操作。
BTW,如果您需要将列输出到第二个表中而未插入第一个表中,则使用MERGE而不是INSERT(如原始问题的注释中所建议的那样),因为其OUTPUT子句支持引用其他列来自源表。否则,使用INSERT保持它更直接,并且它确实允许您访问插入的标识列。
答案 1 :(得分:1)
我正在尝试使用数据绑定将多个记录插入到相关表中。所以,试试吧!
希望这非常有用。请点击此链接How to insert record into related tables。了解更多信息。