Select Command有时会获得相同的行

时间:2017-03-10 10:01:54

标签: c# mysql sql database

我在C#中有一个项目,它从MySQL数据库表中获取数据并使用(StatusID = 5)更新列。它会搜索row StatusID = 4

让我告诉你流程:

SELECT * FROM ACCOUNTS WHERE STATUSID = 4
// After that I assign an object with the data i got.
UPDATE ACCOUNTS SET STATUSID = 5 WHERE ACCOUNTNAME = '#ACCOUNTNAME'

这个流程需要几毫秒,但问题是这个项目同时运行超过700台PC,所以它有时会同时到达同一部分代码,所以会发生什么事情就是1-5台PC得到了相同的帐户。所以我需要像trigger这样的东西,或者在我Select帐户时制作,如果没有更改则需要几秒钟再次选择。

感谢您的关注。

2 个答案:

答案 0 :(得分:1)

您需要在代码中进行交易。

您可以在SQL代码或c#代码中启动事务,两者都做类似的事情。在您的情况下,您需要一个c#transaction https://msdn.microsoft.com/en-us/library/86773566(v=vs.110).aspx

话虽如此,您还应该检查隔离级别,以确保行为是所需的https://msdn.microsoft.com/en-us/library/system.data.isolationlevel(v=vs.110).aspx

答案 1 :(得分:0)

这可以吗? 这不是你的问题的答案,但如果你不能更新,你知道它已经被更改

x