La syntaxe devrait être comme suit:
DELIMITER $$ /* if you're not using an editor, you must change the delimiter*/
CREATE
TRIGGER ai_jos_dhruprofile_each
AFTER INSERT
ON jos_dhruprofile
FOR EACH ROW
BEGIN
UPDATE jos_users
SET jos_users.department = NEW.department
WHERE jos_users.id = NEW.uid; /*<<<--- ; after every stament */
END $$ /* changed delimiter after the end */
DELIMITER ; /*make sure you set the delimiter back to the default*/
Note sur le schéma de nommage pour les déclencheurs
Je vous recommande nommer votre déclencheur ai
(ce qui signifie after insert
) afin que vous sachiez quand il se déclenche quelle table, plutôt qu'un nom sans signification comme: db_dhruniversity.trigger1
.
J'utilise toujours [a/b] + [d/i/u] _tablename_each comme TRIGGERNAME, de cette façon, je sais toujours quand les déclencheurs feux (avant/après) pour lequel l'événement (insertion/suppression/mise à jour) et sur quelle table.
Il est également recommandé de documenter que le déclencheur se déclenche sur la ligne each
, d'où le each
à la fin du nom du déclencheur.
Notez que MySQL ne prend pas en charge les déclencheurs qui se déclenchent une fois par instruction mais (mais cela pourrait changer à l'avenir).
pouvez-vous afficher le message d'erreur de compilation? – heximal