Как исправить мой триггер, который не удаляет

#mysql #sql #triggers

#mysql #sql #триггеры

Вопрос:

Я работаю над сайтом электронной коммерции для школьного проекта, и мне нужно добавить триггер в мой проект.

Я выбираю добавить триггер, который, когда запас продукта равен нулю, продукт удаляется и добавляется в хронологическую таблицу.

 CREATE TRIGGER stock_produit_0 BEFORE UPDATE
ON produit FOR EACH ROW
BEGIN
IF OLD.StockProduit = 0 THEN
INSERT INTO historique_produit(
          idProduit,
          PrixProduit,
          PoidProduit,
          NomProduit,
          DescriptionProduit,
          CouleurProduit,
          idclient,
          dateDelete)
          VALUES(
          OLD.idProduit,
          OLD.PrixProduit,
          OLD.PoidProduit,
          OLD.NomProduit,
          OLD.DescriptionProduit,
          OLD.CouleurProduit,
          OLD.idclient,
          NOW());
DELETE FROM produit WHERE idProduit = OLD.idProduit;
END IF;
END
  

Теперь триггер работает на сервере, но, когда я покупаю продукт, запас продукта достигает 0, но не удаляется

Комментарии:

1. Я использую MySQL с phpMyAdmin

Ответ №1:

Я решил отключить мой триггер в двух других триггерах. Первый — это триггер, который вставляется в таблицу historique_produit, когда запас равен нулю, и он работает. Но теперь у меня есть код, который УДАЛЯЕТ мой продукт из produit, когда запас равен нулю. Я не знаю, возможно ли это. Если это не так, я думаю, что сохраню свой продукт в таблице и не буду показывать его на странице, на которой показан продукт

 BEGIN 
IF NEW.StockProduit = 0 THEN
BEGIN
INSERT INTO historique_produit(
          idProduit,
          PrixProduit,
          PoidProduit,
          NomProduit,
          DescriptionProduit,
          CouleurProduit,
          idclient,
          dateDelete)
          VALUES(
          OLD.idProduit,
          OLD.PrixProduit,
          OLD.PoidProduit,
          OLD.NomProduit,
          OLD.DescriptionProduit,
          OLD.CouleurProduit,
          OLD.idclient,
          NOW());
END;
END IF;
END