同时更新一行

dm7nw8vv  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(288)

假设我有一个包含两列的表,其中有来自两个不同团队的点寄存器,如下所示:
表格:
一队
二队
一队得分
二队积分
该表显示了两支球队之间的关系以及他们在一段时间内完成一个级别时得到的分数。
两队可以随心所欲地打出一个水平,完成比赛后更新积分。因此,它们有可能同时更新自己的点列。比如,a队更新第一队的积分,b队更新第二队的积分。
我知道innodb有一个行级锁定,所以我认为在这种情况下,这两个更新将按顺序实现。
我错了吗?我需要配置什么吗?第二个更新请求会导致死锁吗?
提前谢谢!

n9vozmp4

n9vozmp41#

请提供批评代码。同时,总的来说。。。

BEGIN;   -- start the transaction
SELECT ... FOR UPDATE;  -- if you need to look at something before updating
...
INSERT/UPDATE/etc   -- make whatever changes
COMMIT;

有几个问题:
您需要数据完整性;交易帮助很大。
你想避免死锁——如果没有进一步的细节,我不能保证所有的死锁都能避免。如果确实出现死锁,请准备重新执行事务。
一个连接可能会得到“锁定等待超时”。想想看,这是一个僵局,可以通过让一个竞争者等待来解决。但是,如果另一个连接花费的时间太长,则可能会超时。这通常可以通过加快运行速度来避免(默认等待时间为50秒;很难击中它。)

相关问题