Как разблокировать кортеж после обновления в MySQL / Innodb? - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь смоделировать базу данных транзакций для моего курса баз данных.Я не могу найти, как разблокировать кортеж после использования его для обновления.

Я использовал коммиты и предполагал, что это снимет эксклюзивную блокировку, но это не так.

START TRANSACTION;
BEGIN;
SELECT * FROM account WHERE account_num = 3 FOR UPDATE;
UPDATE account SET balance= balance + 100 WHERE account_num = 3;
COMMIT;

Что я должен сделать, чтобы убедиться, что этот эксклюзивный замок отпущен?

1 Ответ

0 голосов
/ 18 мая 2019

START TRANSACTION и BEGIN являются синонимами; не используйте оба.

Если вы не делаете что-то еще в транзакции, нет необходимости ни в SELECT, ни в транзакции. UPDATE заблокирует строку на время действия UPDATE.

...