如何锁定空行?
我想锁定一个空的选择,例如:
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>
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>
我需要会话2等到会话1完成才返回结果。
我如何实现这一目标?
感谢?
答案 0 :(得分:2)
你有三个选项,每个选项各有优缺点,我更喜欢选择更新或锁定表:
<强> 1。 @Denis提到的咨询锁get_lock()
:
缺点:
不会通过提交,回滚,
系统范围的名称,因此您应该实现自己独特的命名
的优点:
不会清除现有交易
不会阻止其他查询
<强> 2。表锁lock tables
专业人士:
确实通过提交,回滚,
每个数据库锁
缺点:
第3。使用伪选择锁定表格 - 使用常规选择select max(users_id) from users for update
的优点:
确实通过提交,回滚,
每个数据库锁
不会清除现有交易
缺点:
答案 1 :(得分:1)