SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.08.2012 14:03:41

Oleg061
Участник
Зарегистрирован: 17.08.2012
Сообщений: 1

Связи между таблицами и триггеры

Доброго времени суток.
Проблема такая...
Есть таблица, допустим, "каталог", таблица "продукты" и таблица связей между ними (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)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson