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