#1 20.08.10 14:39
[MySQL] Триггеры - блокировка редактируемой таблицы
при использовании в MySQL триггеров есть такая особенность - во время работы триггера блокируется таблица на которую он повешан. НО задача состоит в том, чтобы по удалению одной записи из таблицы удалялись связанные с нею (неважно каким образом) из той же таблицы.
Решение видел только одно - в создании копии таблицы типа Merge, и совершения действий над ней (после работы триггера они синхронизуются) http://habrahabr.ru/blogs/mysql/63883/
Но тут есть свои минусы:
1. Создавать еще одну таблицу только для рабоыт триггеров - как то это через задницу.
2. Это недокументированная особенность - и ее в дальнейшем могут закрыть.
Может кто еще знает как можно решить подобную задачу?
Исправлено Igo (23.08.10 10:09)
Offline
#2 20.08.10 16:53
Re: [MySQL] Триггеры - блокировка редактируемой таблицы
Судя по всему, без отдельной таблицы всё равно не обойтись, а уже использовать её через MERGE, или просто хранить в ней Id записей помеченных на удаление (а само удаление делать по scheduled event), это как захочешь...
Исправлено $up (20.08.10 16:54)
Offline
#3 25.08.10 17:12
Re: [MySQL] Триггеры - блокировка редактируемой таблицы
$up написал(а):
Судя по всему, без отдельной таблицы всё равно не обойтись, а уже использовать её через MERGE, или просто хранить в ней Id записей помеченных на удаление (а само удаление делать по scheduled event), это как захочешь...
Это печально... Ладно, в этот раз обошелся программной эмуляцией триггеров.
Offline
#5 26.08.10 10:02
Re: [MySQL] Триггеры - блокировка редактируемой таблицы
efferson написал(а):
Я не претендую на правду, но вроде бы всю таблицу лочит MyISAM, в то время как InnoDB ограничивается строкой.
В общем курить надо в сторону оф. доки, а так хбз.
Хе - мне тоже эта мысль сразу в голову пришла. Я попробовал и перевел таблицу в InnoDB - и все равно результат остался тот же самый.
Offline

