Problema trigger su MySql

Published by

on

Dovendo definire un trigger su mysql contenente un costrutto BEGIN…END si incontra il problema del carattere “;” che non consente di definire correttamente l’intero corpo del trigger.

Se questo è il mio trigger:

CREATE TRIGGER prova
BEFORE INSERT ON account
FOR EACH ROW
BEGIN
IF NEW.ruolo = `admin` THEN
SET NEW.maxTime = 600;
END IF;
END;

Volendolo caricare da riga di comando devo impostare un delimiter differente dal punto e virgola in modo che quest’ultimo non vada in errore, quindi:

mysql> delimiter //
mysql> CREATE TRIGGER pippo
-> BEFORE INSERT ON prova
-> FOR EACH ROW
-> BEGIN
-> IF NEW.ruolo = `admin` THEN
-> SET NEW.pippo = 1000;
-> END IF;
-> END;//
Query OK, 0 rows affected (0.10 sec)

Si noti la presenza del “//” alla fine dell’ultimo END.
A questo punto occorre anche re-impostare il delimiter originale:

delimiter ;

Iscriviti alla newsletter e scarica un estratto gratuito del mio nuovo libro

Questo campo è obbligatorio.


Sono Luca Cianci e ti aiuto a costruire Team Che Funzionano Davvero utilizzando il coaching e la facilitazione.

#buildyourself


Iscriviti alla newsletter e scarica un estratto gratuito del mio nuovo libro

Questo campo è obbligatorio.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *