I'm going crazy creating this trigger in MySql... Could you find the error? :
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 ;
You seem to have been a bit random with your backticks (I would remove them they aren't required) and and a bit sparing with bracketing - the select part of the set is_present needs to be bracketed as does the values clause in the insert statement. And yes the statements all need to be terminated with ;. This code syntaxs for me.
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 ;