Ich habe das folgende Snippet eines ER-Diagramms.Trigger zum Dekrementieren des Inventars
Immer wenn "order_item" aktualisiert wird (d. H. Wenn ein Artikel einem Einkaufswagen hinzugefügt wurde), möchte ich "Quantity" in der Tabelle "itemsinstock" dekrementieren.
Ich kenne die Syntax eines Triggers (nun, MySQL kann es auch generieren), aber ich weiß nicht, wie es geht. "order_item" muss ItemID von "itemsinstock" lesen und basierend auf dieser ID muss die Menge für diesen bestimmten Artikel dekrementiert werden. Ist das möglich?
Edit: Das ist, was ich habe jetzt:
CREATE DEFINER=`root`@`localhost` TRIGGER
`orderdb`.`itemsinstock_AFTER_INSERT`
AFTER INSERT ON `order_item`
FOR EACH ROW
BEGIN UPDATE itemsinstock
SET Quantity = Quantity - order_item.itemQuantity WHERE itemID = ItemID; END
Es gibt mir einen Fehler mit „order_item.itemQuantity“ .... Es funktionierte mit „-1“ aber offensichtlich will ich es dekrementieren basierend darauf, wie viele "itemQuantity" ist. Wie mache ich das?
Es scheint besser zu funktionieren, aber Ihre Lösung hat ein ziemlich seltsames Problem. Es verringert auch die anderen Elemente, obwohl sie nicht die selbe itemID teilen. Es ist ziemlich seltsam, da die itemID anders ist? – Charles
Entschuldigung, ich habe anscheinend einen Fehler aus dem Originalcode kopiert. Die itemId in der where-Klausel muss auch gegen NEW – e4c5
überprüft werden, da in der ursprünglichen Abfrage itemid = itemid immer wahr ist. Meine Bitte, das nicht zu beachten. – e4c5