2013-06-11 5 views
6

Я уже, искал и читал, много ответов об этой проблеме, но не мог получить четкого ответа о том, как это сделать.Триггер MySql, обновить другую таблицу на вставке

Мой запрос состоит в следующем:

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 ; 

Заранее спасибо.

P.S. Более общий ответ тоже был бы хорош и мог бы быть полезен и для других.

+0

Краткое описание ошибки, которую вы получаете, было бы полезно. – RandomSeed

+0

Я получаю, что он не мог найти колонки, которые вы позже сказали мне заменить с помощью NEW.ColumnName – Mitsosp

ответ

4

Внутри триггера по данной таблице все ссылки на поля этой таблицы должны быть префиксны либо NEW., либо OLD., что относится, соответственно, к значение этого поля после или до изменения.

В вашем случае, вы, вероятно, хотите добавить недавно вставленное количество к вашему существующему запасу: используйте NEW.Supply_Quantity (не говоря уже о Product_Supply, это уже подразумеваются в NEW ключевом слове).

Аналогичным образом, вы, безусловно, хотите использовать NEW.Product_ID в своем состоянии.

Обратите внимание, что NEW не доступен в триггере при удалении, например OLD в триггере при вставке.

+0

Приятно, вот что мне нужно, спасибо большое. – Mitsosp

Смежные вопросы