如何修复未删除的触发器

时间:2019-03-27 08:27:59

标签: mysql sql triggers

我在一个学校项目的电子商务网站上工作,我需要在项目中添加触发器。

我选择添加一个触发器,当产品库存等于零时,将删除该产品并将其添加到历史表中。

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 个答案:

答案 0 :(得分:0)

我决定将扳机切成另外两个扳机。 第一个是触发器,当库存量为零且正在工作时,它将historique_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