【问题标题】:What is the best way to update two tables at the same time in SQL?在 SQL 中同时更新两个表的最佳方法是什么?
【发布时间】:2017-12-10 20:44:11
【问题描述】:

我有两张桌子。一个是“数据”,另一个是“AnalyzedData”

两张表用于,一张表“数据”用于存储基本数据,另一张表用于存储分析数据的详细信息。

在“Data”表中,我们有 3 列 - “DataID”、“DataName”、“AnalyzedDataID”(“AnalyzedData”的外键) 在 AnalyzedData 表中,我们有 3 列。 "AnalyzedDataID","AnalyzedataName"

最初我们在 DataID 和 DataName 列中有数据。稍后,在分析数据之后,我们将数据插入到 AnalyzedData 表中。所以我们需要在将数据插入到 AnalyzedData 表后,更新 Data 表中的 AnalyzedDataID。

最好的方法是什么?

【问题讨论】:

    标签: sql stored-procedures triggers


    【解决方案1】:

    假设您使用的是 SQL Server 2008 或更高版本,OUTPUT 子句在您的场景中可能非常有用。您可以在“分析数据”表中插入数据,这将生成一个 ID,可以在 OUTPUT 的帮助下捕获该 ID。然后该 ID 可用于更新您的“数据”表。

    有关如何使用 OUTPUT 子句的更多详细信息,请参阅 Implementing the OUTPUT Clause in SQL Server 2008

    【讨论】:

      【解决方案2】:

      一种方法是在存储过程中启动事务。如果任何插入/更新失败,则回滚事务;否则,您提交交易。所以配方是:

      1. Take the parameters you need in the stored proc
      2. Start a transaction
      3. Insert/Update each table independently
      4. If no error, Commit the TRANSACTION; otherwise, ROLLBACK
      

      一些有用的链接:

      Intro to Transactions

      Best way to work with Transactions

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-27
        • 1970-01-01
        • 2020-11-10
        • 2020-11-26
        • 2020-09-25
        • 1970-01-01
        相关资源
        最近更新 更多