Запуск обновления количества продукта

#mysql #sql #database

Вопрос:

Я пытаюсь обновить количество товаров в таблице product_stock (когда происходит ОБНОВЛЕНИЕ в таблице Product, оно обновит количество продуктов в таблице product_stock). Но ошибка запущена -> Код ошибки: 1054. Неизвестный столбец «product.id_product» в «предложении where»

 CREATE TABLE IF NOT EXISTS `product`(
    `id_product`INT(11) NOT NULL AUTO_INCREMENT,    
    `unitarya_value`DECIMAL NOT NULL,    
    `minimum_quantity` INT(11) NOT NULL,    
    PRIMARY KEY(`id_product`))    
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;


CREATE TABLE IF NOT EXISTS `stock_product`(
    `id_stock_product`INT(11) NOT NULL AUTO_INCREMENT,    
    `current_quantity`INT(11) NOT NULL,   
    `id_product`INT(11) NOT NULL,    
    PRIMARY KEY(`id_stock_product`),
    FOREIGN KEY(`id_product`)
    REFERENCES `product` (`id_product`)    
    ON UPDATE CASCADE)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

DELIMITER $
CREATE TRIGGER updateProductquantity
BEFORE UPDATE ON product
FOR EACH ROW
BEGIN
    DECLARE qtt INT DEFAULT 50;
    UPDATE stock_product set current_quantity = current_quantity   qtt
    WHERE stock_product.id_product = product.id_product ; 
END; $
 

Ответ №1:

В BEFORE UPDATE триггере столбцы из product таблицы имеют префикс NEW.column и OLD.column , а не само имя таблицы , поэтому последняя часть WHERE предложения может быть:

 WHERE stock_product.id_product = NEW.id_product ;
 

Кроме того, в качестве примечания: если нет других планов с qtt переменной, вы можете использовать 50 значение в SET предложении без переменной:

 UPDATE stock_product SET current_quantity = current_quantity   50