У меня есть триггер после вставки, который должен обновлять поля в другой таблице на основе недавно вставленной строки. (Вычитание суммы акций в одном месте и добавление в другое место). Каждый столбец является местоположением хранения диктата.UPDATE с заданным полем условно не работает?
Точное поле для обновления определяется из выбранного состояния. По существу
UPDATE stock SET FIELD1=FIELD1+NEW.stquantity, FIELD2=FIELD2-NEW.stquantity
ГДЕ FIELD1 и FIELD2 определяются сазе
спускового крючка у меня выглядит, как это сейчас:
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 для правильного синтаксиса использовать вблизи «( СЛУЧАЙ ПРИ fromstocklocationvar = 1 THEN sl1 КОГДА fromstocklocationvar = 2 THEN sl2» в строке 11 – Ali
Я использую MySQL 5.6.13 – Ali