Mysql 多动作触发器上的错误 1064
Error 1064 on Mysql multiple action Trigger
我要在 MySql 中创建这个触发器...
你能找到错误吗? :
DELIMITER $$
CREATE TRIGGER `Gestione_qty_mov_magazzino` AFTER
INSERT ON `dj3u9lk_pods_flusso_merci_magazzi` FOR EACH ROW
BEGIN
DECLARE is_present INT default 0
SET is_present = SELECT COUNT(`dj3u9lk_pods_archivio_magazzino`.codice_articolo) FROM `dj3u9lk_pods_archivio_magazzino` WHERE `dj3u9lk_pods_archivio_magazzino`.codice_articolo = NEW.codice_articolo)
IF (is_present > 0) THEN
UPDATE `dj3u9lk_pods_archivio_magazzino`
SET `dj3u9lk_pods_archivio_magazzino`.quantita_presente = `dj3u9lk_pods_archivio_magazzino`.quantita_presente + NEW.quantita
WHERE `dj3u9lk_pods_archivio_magazzino`.codice_articolo = NEW.codice_articolo AND NEW.tipo_movimentazione = 0
ELSE
INSERT INTO `dj3u9lk_pods_archivio_magazzino` (codice_articolo)
VALUES NEW.codice_articolo
END
END$$
DELIMITER ;
你的反引号似乎有点随意(我会删除它们,它们不是必需的)并且对括号有点保留 - select 集合的一部分 is_present需要像插入语句中的值子句一样放在括号中。是的,所有语句都需要以 ; 结尾。
此代码语法适合我。
DELIMITER $$
CREATE TRIGGER Gestione_qty_mov_magazzino AFTER
INSERT ON dj3u9lk_pods_flusso_merci_magazzi FOR EACH ROW
BEGIN
DECLARE is_present INT default 0;
SET is_present = (
SELECT COUNT(dj3u9lk_pods_archivio_magazzino.codice_articolo)
FROM dj3u9lk_pods_archivio_magazzino
WHERE dj3u9lk_pods_archivio_magazzino.codice_articolo = NEW.codice_articolo
) ;
IF is_present > 0 THEN
UPDATE dj3u9lk_pods_archivio_magazzino
SET dj3u9lk_pods_archivio_magazzino.quantita_presente = dj3u9lk_pods_archivio_magazzino.quantita_presente + NEW.quantita
WHERE dj3u9lk_pods_archivio_magazzino.codice_articolo = NEW.codice_articolo AND NEW.tipo_movimentazione = 0
;
ELSE
INSERT INTO dj3u9lk_pods_archivio_magazzino (codice_articolo)
VALUES (NEW.codice_articolo) ;
END if;
END $$
DELIMITER ;
我要在 MySql 中创建这个触发器... 你能找到错误吗? :
DELIMITER $$
CREATE TRIGGER `Gestione_qty_mov_magazzino` AFTER
INSERT ON `dj3u9lk_pods_flusso_merci_magazzi` FOR EACH ROW
BEGIN
DECLARE is_present INT default 0
SET is_present = SELECT COUNT(`dj3u9lk_pods_archivio_magazzino`.codice_articolo) FROM `dj3u9lk_pods_archivio_magazzino` WHERE `dj3u9lk_pods_archivio_magazzino`.codice_articolo = NEW.codice_articolo)
IF (is_present > 0) THEN
UPDATE `dj3u9lk_pods_archivio_magazzino`
SET `dj3u9lk_pods_archivio_magazzino`.quantita_presente = `dj3u9lk_pods_archivio_magazzino`.quantita_presente + NEW.quantita
WHERE `dj3u9lk_pods_archivio_magazzino`.codice_articolo = NEW.codice_articolo AND NEW.tipo_movimentazione = 0
ELSE
INSERT INTO `dj3u9lk_pods_archivio_magazzino` (codice_articolo)
VALUES NEW.codice_articolo
END
END$$
DELIMITER ;
你的反引号似乎有点随意(我会删除它们,它们不是必需的)并且对括号有点保留 - select 集合的一部分 is_present需要像插入语句中的值子句一样放在括号中。是的,所有语句都需要以 ; 结尾。 此代码语法适合我。
DELIMITER $$
CREATE TRIGGER Gestione_qty_mov_magazzino AFTER
INSERT ON dj3u9lk_pods_flusso_merci_magazzi FOR EACH ROW
BEGIN
DECLARE is_present INT default 0;
SET is_present = (
SELECT COUNT(dj3u9lk_pods_archivio_magazzino.codice_articolo)
FROM dj3u9lk_pods_archivio_magazzino
WHERE dj3u9lk_pods_archivio_magazzino.codice_articolo = NEW.codice_articolo
) ;
IF is_present > 0 THEN
UPDATE dj3u9lk_pods_archivio_magazzino
SET dj3u9lk_pods_archivio_magazzino.quantita_presente = dj3u9lk_pods_archivio_magazzino.quantita_presente + NEW.quantita
WHERE dj3u9lk_pods_archivio_magazzino.codice_articolo = NEW.codice_articolo AND NEW.tipo_movimentazione = 0
;
ELSE
INSERT INTO dj3u9lk_pods_archivio_magazzino (codice_articolo)
VALUES (NEW.codice_articolo) ;
END if;
END $$
DELIMITER ;