MyISAM и запускает атомарность

0

Предположим, что у меня есть некоторая операция (пусть это будет INSERT) в таблице MyISAM с подключенным к ней триггером.

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

Вопрос: Будет ли запущен триггер внутри этой неявной блокировки? Будут ли блокировки таблиц, используемых в триггере, блокировкой?

Другими словами, выполнение триггера является частью атомной операции (например, мой INSERT)?

Кстати, как насчет InnoDB? тот же самый? это триггер, заключенный в явную транзакцию?

Теги:
triggers
myisam
innodb
atomicity

1 ответ

1

Запрос InnoDB выполняется в неявной транзакции.

На самом деле это все работает в транзакции. Режим "без транзакций" эмулируется неявным фиксацией после каждого оператора ("запуск транзакции" отключает автоматическое неявное совершение).

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

С MyISAM триггер заблокирует любую таблицу, которую он изменяет, так же, как и обычный запрос. Независимо от того, атомарно это или нет, я не знаю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню