繁体   English   中英

在SQL中同时更新两个表的最佳方法是什么?

[英]What is the best way to update two tables at the same time in SQL?

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

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

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

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

最好的方法是什么?

假设您使用的是SQL Server 2008或更高版本,则OUTPUT子句在您的方案中会很有帮助。 您可以将数据插入“已分析数据”表中,该表将生成一个ID,可以在OUTPUT的帮助下进行捕获。 然后,该ID可用于更新“数据”表。

有关如何使用OUTPUT子句的更多详细信息,请参阅在SQL Server 2008中实现OUTPUT子句。

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

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

一些有用的链接:

交易简介

交易的最佳方式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM