我有两张桌子。一个是“数据”,另一个是“AnalyzedData”
两个表用于,第一个表“Data”用于存储基本数据,另一个表用于存储有关分析数据的详细信息。
在“数据”表中,我们有3列 - “DataID”,“DataName”,“AnalyzedDataID”(“AnalyzedData”的外键) 在AnalyzedData表中,我们有3列。 “AnalyzedDataID”, “AnalyzedataName”
最初我们在DataID和DataName列中有数据。之后,在分析数据后,我们将数据插入到AnalyzedData表中。因此,我们需要在将数据插入AnalyzedData表后更新Data表中的AnalyzedDataID。
最好的方法是什么?
答案 0 :(得分:2)
假设您使用的是SQL Server 2008或更高版本,OUTPUT子句在您的方案中非常有用。您可以在"分析数据"中插入数据。 table,它将生成一个ID,可以在OUTPUT的帮助下捕获。然后,该ID可用于更新您的数据"表
有关如何使用OUTPUT子句的更多详细信息,请参阅Implementing the OUTPUT Clause in SQL Server 2008。
答案 1 :(得分: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
一些有用的链接: