2013-06-11 13 views
6

Już, przeszukałem i przeczytałem, wiele odpowiedzi na ten temat, ale nie mogłem uzyskać jasnej odpowiedzi, jak to zrobić.Wyzwalacz MySql, aktualizacja innej tabeli przy wstawianiu

Moje zapytanie jest następujące:

DELIMITER // 
CREATE TRIGGER `Stock_Update` AFTER INSERT ON `Store_db`.`Product_Supply` FOR EACH ROW 
BEGIN 
    UPDATE `Store_db`.`Stock` AS `ST` 
    SET `ST`.`Stock_Quantity` = `ST`.`Stock_Quantity` + `Product_Supply`.`Supply_Quantity` 
    WHERE `ST`.`Product_ID` = `Product_Supply`.`Product_ID`; 
END// 
DELIMITER ; 

Dzięki z góry.

P.S. Bardziej ogólna Odpowiedź również byłaby miła i może być pomocna dla innych osób.

+0

Szybki opis błędu, który otrzymujesz, byłby pomocny. – RandomSeed

+0

Dowiedziałem się, że nie mogę znaleźć kolumn, które później mi powiedzieliście, aby zastąpić NEW.ColumnName – Mitsosp

Odpowiedz

4

Z poziomu wyzwalacza w danej tabeli wszystkie odniesienia do pól w tej tabeli muszą być poprzedzone przedrostkiem NEW. lub OLD., co odnosi się odpowiednio do wartość tego pola po lub przed zmianą.

W twoim przypadku, prawdopodobnie chcesz dodać nowo włożonej ilości do istniejącej magazynie: używać NEW.Supply_Quantity (nie wspominając Product_Supply, to już nakazywałby hasła NEW).

Podobnie, na pewno chcesz użyć NEW.Product_ID w swoim stanie.

Zauważ, że NEW nie jest dostępny w wyzwalaczu podczas usuwania, np. OLD w wyzwalaczu podczas wstawiania.

+0

Niezłe, właśnie tego potrzebowałem, wielkie dzięki. – Mitsosp

Powiązane problemy