在MySQL中正确使用BEGIN和END

时间:2016-03-18 13:17:07

标签: mysql sql triggers

我刚刚使用Apache的Derby数据库切换到MySQL,并且仍然熟悉语法。我阅读了有关触发器的文档,我认为我正确地遵循了语法。但是,我遇到问题BEGINEND如果我放BEGINEND,我的插入触发器不起作用我甚至尝试放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;

删除BEGINEND会使其有效,但我无法充分利用复合语句。

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),我会看到触发器。

config

我认为在执行创建触发器定义时不应该返回错误消息。

1 个答案:

答案 0 :(得分: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 ;