Синтаксис должен быть следующим:
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*/
Примечание по схеме именования для триггеров
Я бы рекомендовал назвать ваш триггер ai
(что означает after insert
), чтобы вы знали, когда он запускает какую таблицу, а не бессмысленное имя, например: db_dhruniversity.trigger1
.
Я всегда использую [a / b] + [d / i / u] _tablename_each в качестве имени триггера, таким образом я всегда знаю, когда срабатывает триггер (до / после) для какого события (вставить / удалить / обновить) и по какой таблице.
Также рекомендуется задокументировать, что триггер срабатывает в строке each
, следовательно, each
в конце имени триггера.
Обратите внимание, что MySQL не поддерживает триггеры, которые срабатывают один раз за оператор пока (но это может измениться в будущем).