MySql.Data.MySqlClient.MySqlException: 'Неизвестный столбец' Cantidad 'в' списке полей '' - PullRequest
0 голосов
/ 10 мая 2019

Мне нужно обновлять свой запас, всякий раз, когда мы покупаем товар, это количество нужно добавить в мой запас. Я делаю это обновление через mysql , у меня есть две таблицы "detalledecompra", где мы покупаем продукт, и "productos", который будет на складе, он содержит идентификатор продукта, описание, доступное количество , так далее. Я думал о создании этого триггера:

CREATE TRIGGER UPDATESTOCK AFTER INSERT ON detalledecompra
FOR EACH ROW

BEGIN

UPDATE productos
SET productos.StockActual = StockActual + detalledecompra.Cantidad 
  WHERE productos.CodigoProducto = detalledecompra.CodigoProducto;

END;

но не могу найти столбец detalledecompra.Cantidad, моя визуальная студия говорит

MySql.Data.MySqlClient.MySqlException: «Неизвестный столбец« Cantidad »в 'список полей' '

как мне изменить триггер, чтобы всякий раз, когда мы что-то покупали, это количество добавлялось в товар "StockActual"?

1 Ответ

3 голосов
/ 10 мая 2019

Причина, по которой вы получаете эту ошибку, заключается в том, что вы не присоединяетесь к таблице detalledecompra в своем запросе UPDATE. Тем не менее, вам не нужно использовать эту таблицу в этом случае.

Когда вы создаете триггер на INSERT, у вашего триггера есть доступ к ключевому слову NEW, которое дает доступ к вставляемым значениям. Из-за этого вам на самом деле не нужно обращаться к detalledecompra напрямую в функции триггера.

Это должно работать для вас:

UPDATE productos
SET productos.StockActual = StockActual + NEW.Cantidad 
WHERE productos.CodigoProducto = NEW.CodigoProducto;

Вот некоторая документация по триггерам MySQL и ключевым словам NEW и OLD: Документы MySQL

...