Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / MySQL Новый топик    Ответить
 Как триггером удалить дерево?  [new]
svnvlad
Member

Откуда:
Сообщений: 2211
CREATE DEFINER = 'shiprepair'@'%' TRIGGER `drv_group_before_del_tr1` BEFORE DELETE ON `drv_group`
  FOR EACH ROW
BEGIN
  DELETE FROM drv_group WHERE up_id = OLD.id;
END;

Ругается на рекурсивный вызов триггера. Как выйти из положения? ON DELETE CASCADES не предлагать.
2 ноя 20, 15:45    [22225018]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером удалить дерево?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20785
svnvlad
ON DELETE CASCADES не предлагать.
Тогда никак. Триггер не может изменять таблицу, на которой определён.
2 ноя 20, 16:50    [22225086]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером удалить дерево?  [new]
svnvlad
Member

Откуда:
Сообщений: 2211
Akina
svnvlad
ON DELETE CASCADES не предлагать.
Тогда никак. Триггер не может изменять таблицу, на которой определён.

Может как-то исхитриться окольным путем через функцию или процедуру?
2 ноя 20, 16:55    [22225094]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером удалить дерево?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20785
Только если заменить сам удаляющий запрос на процедуру.
2 ноя 20, 16:58    [22225098]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером удалить дерево?  [new]
svnvlad
Member

Откуда:
Сообщений: 2211
Akina
Только если заменить сам удаляющий запрос на процедуру.

Заменил, все равно ругается.
автор
ERROR 1442 (HY000): Can't update table 'drv_group' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
4 ноя 20, 06:00    [22226101]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером удалить дерево?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20785
И тем не менее - изначально это триггер. И все ограничения на месте. Обмануть "прокладкой" - нельзя, контроль идёт по контексту кода.
4 ноя 20, 10:58    [22226143]     Ответить | Цитировать Сообщить модератору
Все форумы / MySQL Ответить