Я пытаюсь использовать блокировку строк MySQL, чтобы в основном эмулировать MuteEx в строке. Допустим, в моей таблице есть 2 столбца, идентификатор и текстовое поле, а также три записи (1, а) (2, б) и (3, в). ВЫБЕРИТЕ * ИЗ таблицы; вернет эти результаты. Я могу заблокировать определенную строку обычным способом.
START TRANSACTION;
BEGIN;
SELECT * FROM table WHERE id = '2' FOR UPDATE;
Однако, если бы из второго соединения я должен был выбрать SELECT * из таблицы. Он вернет все 3 результата. Есть ли способ блокировки уровня строки, чтобы в основном предотвратить любой SELECT от просмотра/использования заблокированной строки? В основном я пытаюсь запретить кому-либо использовать строку, которая в настоящее время используется/манипулируется, или даже просматривать строку, поскольку ее данные (поскольку она используется/манипулируется) нельзя доверять точности во время SELECT .
SELECT ... FOR UPDATE
, он будет ждать, пока первоначальная блокировка не будет снята. - person Timo   schedule 05.06.2019