2

我有两个存储过程,一个是到insert表的一条记录,另一个是到update这条记录的一列。

一个首先insert运行,然后我将运行一些其他进程(包括用于其他表的存储过程。)最后我将运行update存储过程以将记录更新为已完成。

但是,有时update找不到匹配项(刚刚插入的那个,我使用一些变量(其中一个是日期时间类型),我传递给insert存储过程来查找刚刚插入的记录然后进行更新。我使用了更新触发找到这个原因。)

在运行之前如何确保数据已经在表中update?我需要一个while循环吗?

编辑:我在一个BackgroundWorker.DoWork事件处理程序中运行这些

4

2 回答 2

3

这与它的声音不是异步的,因此您不需要让更新脚本等待插入。

也许我是误会了。但是,让我印象深刻的是,您是在说您正在寻找要使用日期时间而不是其身份更新的行。如果您的插入过程返回 SCOPE_IDENTITY,然后将其传递给更新过程...听起来应该可以解决更新找不到正确行的问题。

于 2012-10-23T16:03:19.470 回答
0

在一个事务中运行所有数据库内容。

简单示例:

using(TransactionScope scope = new TransactionScope())
{
  // init connection, command etc.

  ...

  insertCommand.ExecuteNonQuery();

  ...

  updateCommand.ExecuteNonQuery();

  scope.Complete();
}
于 2012-10-23T15:58:11.813 回答