我有两个存储过程,一个是insert
一个记录到表中,另一个是update
该记录的一列。
首先运行insert
,然后我将运行一些其他进程(包括用于其他表的存储过程)。最后,我将运行update
存储过程以将记录更新为已完成。
但是,有时update
找不到匹配(刚插入的那个,我使用了一些变量(其中一个是datetime类型),我传递给insert
存储过程来查找刚刚插入的记录然后更新。我使用了更新触发器来找到这个原因。)
如何在运行update
之前确保数据已经在表格中?我需要while
循环吗?
编辑:我在一个BackgroundWorker.DoWork
Eventhandler中运行这些
答案 0 :(得分:3)
这与声音不同步,因此您不需要让更新脚本等待插入。
也许我误会了。但是,对我来说,最重要的是你说你发现要用datetime更新的行而不是它的标识。如果你有插入proc返回SCOPE_IDENTITY,然后将其传递给更新proc ...它听起来应该解决你的问题,更新无法找到正确的行。
答案 1 :(得分:0)
在一次交易中运行所有数据库内容。
简单示例:
using(TransactionScope scope = new TransactionScope())
{
// init connection, command etc.
...
insertCommand.ExecuteNonQuery();
...
updateCommand.ExecuteNonQuery();
scope.Complete();
}