Mysql
嘗試使用觸發器更新庫存時出錯
我基本上有 2 張桌子
CREATE TABLE PRODUCTS ( id_product BIGINT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY, code VARCHAR(6) NOT NULL UNIQUE, name VARCHAR(30) NOT NULL, stock INT(4) UNSIGNED NOT NULL ); CREATE TABLE PRODUCT_SALES ( id_product_sale BIGINT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY, QUANTITY INT(4) UNSIGNED NOT NULL, product_id BIGINT(4) UNSIGNED NOT NULL, FOREIGN KEY (product_id) REFERENCES PRODUCTS(id_product) );
和一個觸發器
CREATE TRIGGER updateStock AFTER INSERT ON PRODUCT_SALES FOR EACH ROW UPDATE PRODUCTS SET PRODUCTS.stock = PRODUCTS.stock - PRODUCT_SALES.quantity WHERE PRODUCTS.id_product = PRODUCT_SALES.product_id
當有人在product_sales表中插入時,我想更新 X 產品的庫存,但是在我的product_sales表中插入一行時出現以下錯誤
“where 子句”中的未知列“PRODUCT_SALES.product_id”
我正在使用適用於 Win64 (AMD64) 的MariaDB Ver 15.1 Distrib 10.2.12-MariaDB。
我做了一個DBFiddle。
在此先感謝,最好的問候。
您不能
PRODUCT_SALES.
對觸發器內的列使用引用。在程式碼中,一旦通過
FOR EACH ROW
,您必須引用新值NEW.
CREATE TRIGGER updateStock AFTER INSERT ON PRODUCT_SALES FOR EACH ROW UPDATE PRODUCTS SET PRODUCTS.stock = PRODUCTS.stock - NEW.quantity WHERE PRODUCTS.id_product = NEW.product_id;