MySQL транзакция в хранимой процедуре (блокировка / откат) - PullRequest
0 голосов
/ 28 апреля 2009

Проводит ли транзакция в хранимой процедуре какую-либо блокировку, чтобы другие не могли обновить таблицы?

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

1 Ответ

0 голосов
/ 28 апреля 2009

Проводит ли транзакция в хранимой процедуре какую-либо блокировку, чтобы другие не могли обновить таблицы?

При выполнении некоторых DML для таблицы InnoDB затронутые строки блокируются до конца транзакции (независимо от того, находится ли она внутри хранимой процедуры или нет).

Вы можете изменить заблокированные строки в той же транзакции, которая их заблокировала.

Чтобы явно заблокировать некоторые строки, введите:

SELECT  *
FROM    table
WHERE   condition
FOR UPDATE

За исключением фиксации или отката транзакции, другого способа разблокировки строк не существует

Нужно ли явно указывать логику отката или транзакция автоматически откатится, если произойдет ошибка, поскольку она никогда не достигнет команды фиксации.

Вам нужно будет явно выполнить откат.

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