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 ;