我有一個表上的後插入觸發器,以便根據新插入的行更新另一個表上的字段。 (它在一個位置扣除庫存數量並添加到另一個位置,每一列都是一個區分庫存位置)更新與設置字段確定有條件不工作?
要更新的確切字段由選擇的統計數據確定。從本質上講
UPDATE stock SET FIELD1=FIELD1+NEW.stquantity, FIELD2=FIELD2-NEW.stquantity
WHERE FIELD1和FIELD2由case語句
觸發我決定現在看起來是這樣的:
CREATE TRIGGER `changestockqty` AFTER INSERT ON `stocktransfer_items` FOR EACH ROW
BEGIN
DECLARE fromstocklocationvar INT DEFAULT -1;
DECLARE tostocklocationvar INT DEFAULT -1;
SET fromstocklocationvar = (SELECT stsource_location FROM stocktransfers WHERE stocktransfer.idstocktransfers=NEW.idstocktransfers);
SET tostocklocationvar = (SELECT stdest_location FROM stocktransfers WHERE stocktransfer.idstocktransfers=NEW.idstocktransfers);
UPDATE stock SET
CASE
WHEN fromstocklocationvar=1 THEN sl1
WHEN fromstocklocationvar=2 THEN sl2
WHEN fromstocklocationvar=3 THEN sl3
WHEN fromstocklocationvar=4 THEN sl4
WHEN fromstocklocationvar=5 THEN sl5
END
=
CASE
WHEN fromstocklocationvar=1 THEN sl1
WHEN fromstocklocationvar=2 THEN sl2
WHEN fromstocklocationvar=3 THEN sl3
WHEN fromstocklocationvar=4 THEN sl4
WHEN fromstocklocationvar=5 THEN sl5
END
-NEW.stquantity,
CASE
WHEN tostocklocationvar=1 THEN sl1
WHEN tostocklocationvar=2 THEN sl2
WHEN tostocklocationvar=3 THEN sl3
WHEN tostocklocationvar=4 THEN sl4
WHEN tostocklocationvar=5 THEN sl5
END
=
CASE
WHEN tostocklocationvar=1 THEN sl1
WHEN tostocklocationvar=2 THEN sl2
WHEN tostocklocationvar=3 THEN sl3
WHEN tostocklocationvar=4 THEN sl4
WHEN tostocklocationvar=5 THEN sl5
END
+NEW.stquantity,
WHERE stock.idstockpcode=NEW.stpcode;
END
它顯示了第一例後一個錯誤。我究竟做錯了什麼?
什麼錯誤? –
它說錯誤:錯誤1064:您的SQL語法中有錯誤;檢查對應於你的MySQL服務器版本正確的語法使用附近的手冊「( CASE WHEN fromstocklocationvar = 1,則SL1 WHEN fromstocklocationvar = 2,則SL2」在第11 – Ali
我使用的是MySQL 5.6.13 – Ali