2016-03-18 2 views
0

Я просто переключился с базы данных Derby от Apache на MySQL и все еще знаком с синтаксисом. Я прочитал документацию о триггерах, и я думаю, что правильно следил за синтаксисом. Тем не менее, у меня проблемы с BEGIN и END Мой триггер ввода ниже не работает, если я положил BEGIN и END Я даже попробовал поставить DELIMITER, но это не исправить.Правильное использование BEGIN и END в MySQL

CREATE TRIGGER COPY_INSERTED_USERID_TO_ALLUSERS_PERMISSIONS 
AFTER INSERT ON ALLUSERS 
FOR EACH ROW 
    BEGIN 
     INSERT INTO ALLUSERS_ADMIN_PERMISSIONS(USERID) 
      VALUES(NEW.USERID); 
    END; 

Удаление BEGIN и END делает его работу, но я не в состоянии в полной мере воспользоваться из операторов соединения.

CREATE TRIGGER COPY_INSERTED_USERID_TO_ALLUSERS_PERMISSIONS 
AFTER INSERT ON ALLUSERS 
FOR EACH ROW 

     INSERT INTO ALLUSERS_ADMIN_PERMISSIONS(USERID) 
      VALUES(NEW.USERID); 

enter image description here

Я был бы признателен за любую помощь. Спасибо.

Отредактировано:

Я пытался следовать @Ilanatos совет, который работает, но возвращает ошибку на первой попытке. Мне пришлось обновить страницу phpmyadmin, чтобы избавиться от ошибки. Ниже приведены скриншоты.

enter image description here

тогда, если я обновить страницу (как Firefox и Chrome), я вижу на курок.

enter image description here

Я не думаю, что он должен возвращать сообщение об ошибке во время выполнения создать определение триггера.

ответ

0

Попробуйте использовать функцию разделителя при создании триггера.

DELIMITER $$ 

CREATE TRIGGER COPY_INSERTED_USERID_TO_ALLUSERS_PERMISSIONS 
AFTER INSERT ON ALLUSERS 
FOR EACH ROW BEGIN 
    INSERT INTO ALLUSERS_ADMIN_PERMISSIONS(USERID) 
     VALUES(NEW.USERID); 
END$$ 

DELIMITER ; 
+0

@Ilanato Спасибо за ваш совет. Хотя появляется триггер, есть небольшая проблема. Когда я попытался воссоздать триггер (после его удаления) с помощью кода, он возвращает сообщение об ошибке, как показано на снимке экрана, который я предоставил. – p3ace

Смежные вопросы