2017-07-06 62 views
0

我有两张桌子。一个是“数据”,另一个是“分析数据”在SQL中同时更新两个表的最佳方法是什么?

两个表格用于第一个表格“数据”用于存储基本数据,另一个表格用于存储有关分析数据的详细信息。

在“数据”表中我们有3列 - “DataID”,“DataName”,“AnalyzedDataID”(分析数据的外键) 在AnalyzedData表中我们有3列。 “AnalyzedDataID”,“AnalyzedataName”

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

这样做的最好方法是什么?

回答

1

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

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

2

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

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

相关问题