如何在行中使用此sql添加锁?

时间:2018-09-18 07:57:54

标签: mysql locking

SQL:

 INSERT LOW_PRIORITY IGNORE INTO A_new (??) SELECT ?? FROM A FORCE INDEX(`PRIMARY`) 
 WHERE ((`id` >='XX' )) AND ((`id` <= 'XX')) LOCK IN SHARE MODE;

是否可以在范围行中添加S锁而不进行任何交易?

如果不是,此sql仅在事务中起作用吗?

1 个答案:

答案 0 :(得分:0)

我从mysql文档中得到了答案。

  

从...位置插入SELECT ...   在插入T的每一行上记录锁定(无间隙锁定)。   事务隔离级别为READ COMMITTED,InnoDB进行搜索   在S上作为一致读取(无锁)。否则,InnoDB设置共享   S上的行上的下一键锁。InnoDB必须在后者中设置锁   案例:在使用基于语句的二进制日志进行前滚恢复期间,   每个SQL语句必须以与以前完全相同的方式执行   原来完成的。