Доброго времени суток.
Проблема такая...
Есть таблица, допустим, "каталог", таблица "продукты" и таблица связей между ними (c каскадным удалением).
При удалении продукта мне надо получить id категории продукта из таблицы связей и, в зависимости от того, есть ли в этой категории еще продукты, я меняю флаг категории.
Пишу достаточно простой триггер
DELIMITER @@
DROP TRIGGER before_delete_products @@
CREATE TRIGGER catalog.before_delete_products
BEFORE DELETE ON catalog.products
FOR EACH ROW
BEGIN
DECLARE cur_category_id INT(3);
DECLARE rows_count INT(4);
SELECT id_category INTO cur_category_id FROM catalog_products WHERE catalog_products.id_product=OLD.id;
SELECT COUNT(*) INTO rows_count FROM catalog_products WHERE catalog_products.id_category=cur_category_id;
IF rows_count=1 THEN
UPDATE catalog SET catalog.flag=0 WHERE catalog.id=cur_category_id;
END IF;
END @@
DELIMITER ;
но оказывается , что даже при BEFORE DELETE mysql удаляет связь перед выполнением триггера.
Подскажите, как мне быть в данной ситуации, при этом не убирая каскадное удаление и не загоняя id категории заранее в переменную.
Отредактированно Oleg061 (20.08.2012 15:39:18)