2016-12-15 4 views
1

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?

Snippet of ER diagram

Antwort

1

Ziemlich nahe

CREATE DEFINER=`root`@`localhost` TRIGGER 
`orderdb`.`itemsinstock_AFTER_INSERT` 
AFTER INSERT ON `order_item` 
FOR EACH ROW  
BEGIN 
    UPDATE itemsinstock 
    SET Quantity = Quantity - NEW.itemQuantity WHERE itemID = NEW.id; 
END 

Hinweis, wie ORDER_ITEM (das nicht definiert ist) durch NEW ersetzt, die der Zeile entspricht, die eingefügt wurde. Auch als Randnotiz, da dies eine einzige Anweisung ist, brauchen Sie keine Anfangsbausteine ​​

+0

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

+0

Entschuldigung, ich habe anscheinend einen Fehler aus dem Originalcode kopiert. Die itemId in der where-Klausel muss auch gegen NEW – e4c5

+0

überprüft werden, da in der ursprünglichen Abfrage itemid = itemid immer wahr ist. Meine Bitte, das nicht zu beachten. – e4c5

Verwandte Themen