小编Wiz*_*ard的帖子

InnoDB 行锁定 - 如何实现

我一直在环顾四周,阅读 mysql 站点,但仍然无法确切了解它是如何工作的。

我想选择并行锁定写入结果,写入更改并释放锁定。audocommit 已开启。

方案

id (int)
name (varchar50)
status (enum 'pending', 'working', 'complete')
created (datetime)
updated (datetime) 
Run Code Online (Sandbox Code Playgroud)

选择状态为待处理的项目,并将其更新为工作状态。使用独占写入来确保同一项目不会被捡起两次。

所以;

"SELECT id FROM `items` WHERE `status`='pending' LIMIT 1 FOR WRITE"
Run Code Online (Sandbox Code Playgroud)

从结果中获取 id

"UPDATE `items` SET `status`='working', `updated`=NOW() WHERE `id`=<selected id>
Run Code Online (Sandbox Code Playgroud)

我是否需要做任何事情来释放锁,它是否像我上面所做的那样工作?

mysql innodb locking

15
推荐指数
1
解决办法
6万
查看次数

标签 统计

innodb ×1

locking ×1

mysql ×1