【问题标题】:Insert data from staging table into multiple, related tables?将临时表中的数据插入多个相关表中?
【发布时间】:2011-10-20 14:47:49
【问题描述】:

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

由于从应用程序到数据库的往返次数较多,因此性能不是很好。出于这个和其他一些原因,我计划改用临时表并从那里导入数据。阅读我的选项来解决这个问题,对临时表中的数据执行相同的插入存储过程的游标是有意义的。然而,光标似乎是邪恶的化身,应该避免。

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

【问题讨论】:

  • 在 SQL Server 2008 中,您可以使用 merge...output。看看这个问题。 stackoverflow.com/questions/5365629/…
  • 批量插入临时表。然后按照其他人的描述使用 MERGE 和 OUTPUT。

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


【解决方案1】:

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

顺便说一句,如果您需要将未插入到第一个表中的列输出到第二个表中,请使用 MERGE 而不是 INSERT(如对原始问题的评论中所建议),因为它的 OUTPUT 子句支持引用其他列从源表中。否则,将其与 INSERT 一起保存更简单,并且它确实使您可以访问插入的标识列。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 此链接已失效。
    猜你喜欢
    • 1970-01-01
    • 2017-11-13
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多