Mysql 数据库中的并发控制?

Mysql 数据库中的并发控制?,mysql,database,Mysql,Database,我正在实现一个在线判断。用户的提交进入 数据库。该表有一个属性status,该属性最初是排队的。我的程序连接到数据库,并在提交表中查看状态为排队的提交,如果是,则选择其中一个并将状态变为评估。然后编译提交并针对测试用例运行。然后根据结果将状态属性更改为已接受,错误答案等 我的问题是,如果我在具有相同数据库的两台不同机器上运行我的程序,这两个程序可能会出现并发问题。例如,如果我提交,它的状态将是排队的,现在假设第一个程序先读取它,然后再更改数据库 状态=评估,第二个程序也会读取提交的内容。现在没有

我正在实现一个在线判断。用户的提交进入 数据库。该表有一个属性
status
,该属性最初是
排队的
。我的程序连接到数据库,并在
提交
表中查看状态为
排队
的提交,如果是,则选择其中一个并将状态变为
评估
。然后编译提交并针对测试用例运行。然后根据结果将
状态
属性更改为
已接受
错误答案

我的问题是,如果我在具有相同数据库的两台不同机器上运行我的程序,这两个程序可能会出现并发问题。例如,如果我提交,它的状态将是排队的,现在假设第一个程序先读取它,然后再更改数据库 状态=
评估
,第二个程序也会读取提交的内容。现在没有错误,因为正在重新评估相同的提交内容。
但是在这种情况下,
Mysql
仍然提供并发性,或者我必须自己添加它
最好的方法是什么?

可以通过读锁实现。有一些很好的例子,比如:

查找行版本控制……你应该考虑使用像RESQUE这样的作业排队平台。你能告诉我如何把锁放在上面描述的情况下吗?如果你编辑了你已经尝试过的问题的细节,以及你遇到的问题,你可能会得到更多的答案。人们通常不想只为你解决一个问题。@Cylindric我现在的问题是,如果某个程序读取了一个提交,我会对它设置一个锁,但这不会阻止另一个程序等待释放锁并重新评估我不想要的提交。如果有问题,我已经包括了上面的所有内容不,请告诉我我会的,所以你应该在自动提交设置为false的情况下运行Transaction中的语句。根据您用来编写程序的语言,应该有方法在获取连接时指定这些属性。