我正在更新SQL表中的列,我想检查它是否已成功更新或已经更新,我的查询没有做任何事情
因为我们在SQL Server中获得@@rowcount
。
在我的情况下,我想更新名为lockForProcessing
的列,所以如果它已经处理,那么我的查询不会影响任何行,这意味着其他人已经在处理它,否则我会处理它
答案 0 :(得分:0)
如果我理解正确,您的问题与多线程/并发问题有关,同一个表可能会同时更新。
你可能想看一下: Chapter 11. Transactions And Concurrency
也许您需要做的就是在开始事务时选择正确的IsolationLevel,然后读取表行以获取当前值:
using (var transaction = session.BeginTransaction(IsolationLevel.Serializable))
{
session.Get(); // Read your row
transaction.Commit();
}
虽然在应用程序代码中创建一些锁定或管道机制可能更容易。如果不了解谁正在访问数据库(其他事务,会话,进程?),则很难更准确地回答。