С учетом двух простых процедур
DELIMITER $$
CREATE PROCEDURE simpleproc()
BEGIN
UPDATE mytable SET name = 'bbb' WHERE id = 1;
DO SLEEP(15);
END
$$ DELIMITER ;
DELIMITER $$
CREATE PROCEDURE simpleproc2()
BEGIN
UPDATE mytable SET name = 'jjj' WHERE id = 1;
END
$$ DELIMITER ;
Затем в одном соединении (в MySQL Workbench) я запускаю первую процедуру:
call simpleproc();
, а во втором соединении запускаю вторую процедуру
call simpleproc2();
Что меня удивило, так это то, что вторая транзакция не ждет первой и выполняется немедленно.
Что я пропустил?почему в первой транзакции нет блокировок строки id=1
?
Таблица mytable
имеет InnoDB
двигатель