如何在行中使用这个sql add锁?

z9smfwbn  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(246)

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是否只在事务中工作?

woobm2wo

woobm2wo1#

我从mysql文档得到答案。
插入t选择。。。从那里。。。在插入到t中的每一行上设置独占索引记录锁(不带间隙锁)。如果事务隔离级别为read committed,则innodb会以一致读取(无锁)的方式对s进行搜索。否则,innodb会对s中的行设置shared next key锁。在后一种情况下,innodb必须设置锁:在使用基于语句的二进制日志进行前滚恢复的过程中,每个sql语句的执行方式必须与最初完全相同。

相关问题