#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