Как использовать этот sql добавить блокировку в строках? - PullRequest
0 голосов
/ 18 сентября 2018

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 голосов
/ 26 сентября 2018

Я получаю ответ из документа MySQL.

INSERT INTO T SELECT ... ОТ S WHERE ... устанавливает эксклюзивный индекс блокировка записи (без блокировки промежутка) в каждом ряду, вставленном в T. Если Уровень изоляции транзакции READ COMMITTED, InnoDB выполняет поиск на S как последовательное чтение (без блокировок). В противном случае InnoDB устанавливает общий доступ блокировки следующего ключа в строках из S. InnoDB должен установить блокировки в последнем case: при восстановлении с повтором транзакций с использованием двоичного журнала на основе операторов, каждый оператор SQL должен выполняться точно так же, как это было сделано изначально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...