Удалить строку, когда обновление устанавливает столбец на определенное значение

Из-за плохого кодирования на нашем сайте случается сердечный приступ, когда любой пользователь пытается удалить категорию контактов из серверной части Joomla (SQL 5.5). Вместо удаления он обновляет "опубликованный" столбец до -2 (где 1 опубликовано, а -1 не опубликовано). Не в состоянии найти источник, который вызывает это, мы почти сразу же попытались создать триггер для полного удаления категории.

CREATE TRIGGER `PermaDelete`
AFTER UPDATE
ON `nac_categories`

FOR EACH ROW
    DELETE FROM nac_categories WHERE (NEW.published = -2);

Я получил ошибку

Error
Can't update table 'nac_categories' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. SQL=UPDATE `nac_categories` SET published = -2 WHERE (lft > 0 AND rgt < 0) OR id = 36

В основном, я просто хочу удалить категорию, когда опубликовано обновлено до -2

1 ответ

Решение

После прочтения я не могу создать СОБЫТИЕ из TRIGGER, и я не могу манипулировать таблицей (путем удаления) таким образом, поскольку она пытается манипулировать таблицей таким образом, чтобы предотвратить исходное событие. Я мог бы, однако, создать событие, которое запускалось каждые 5 секунд или около того, чтобы убрать -2, но было бы чище, если бы я просто покопался в php, выполняя обновление и изменив его. Гораздо сложнее, но я буду следить здесь на всякий случай, если кто-то знает о методе.

Другие вопросы по тегам