Выполните 2 транзакции обновления для той же строки - PullRequest
0 голосов
/ 30 сентября 2018

С учетом двух простых процедур

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 двигатель

...