gpt4 book ai didi

MYSQL - 锁定空行

转载 作者:行者123 更新时间:2023-11-29 02:05:45 29 4
gpt4 key购买 nike

如何锁定空行?

例如,我想锁定一个空的选择:

第 1 节

mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from users where username = 'nousername' for update;
Empty set (0.01 sec)

mysql>

第 2 节

mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from users where username = 'nousername' for update;
Empty set (0.00 sec)

mysql>

我需要 Session 2 等到 Session 1 完成后再返回结果。

我怎样才能做到这一点?

谢谢?

最佳答案

你有三个选项,每个选项都有优点和缺点,我更喜欢 select for update 或 lock tables:

<强>1。 @Denis 提到的咨询锁 get_lock():

缺点:

  • 不会因提交、回滚而被清除

  • 系统范围的名称,因此您应该实现自己的唯一命名

优点:

  • 不清除现有交易

  • 不阻止其他查询

<强>2。表锁锁表

优点:

  • 确实通过提交、回滚清除了

  • 每个数据库锁

缺点:

  • 清理现有交易

<强>3。使用伪选择锁定表 - 我没有使用特定的选择,而是使用一般选择 select max(users_id) from users for update

优点:

  • 确实通过提交、回滚清除了

  • 每个数据库锁

  • 不清除现有交易

缺点:

  • 如果表为空则不起作用(需要插入伪行,或者使用专用表加锁)

关于MYSQL - 锁定空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6364683/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com