phpMyadmin DELIMITER错误是对还是错?

时间:2016-03-27 04:16:43

标签: mysql delimiter

在网上阅读了很多关于使用分隔符存储过程和触发器等的信息后,我感到很困惑。

根据我的理解,触发器块应该按照分隔符编写:

DROP TRIGGER IF EXISTS innovationevents.Task9Trigger1;
DELIMITER //
CREATE TRIGGER innovationevents.Task9Trigger1 
BEFORE INSERT ON innovationevents.tblattendees
FOR EACH ROW
BEGIN

INSERT INTO innovationevents.tblregistration 
(RegistrationID, AttendeeID, EventID, RegistrationDate, RegistrationPaid) 
VALUES (40, new.AttendeeID, 3, CURDATE(), 0);

END //

现在问题是我在phpMyadmin中收到错误消息,但代码仍在运行。我想也许这是错的?或者有没有更复杂的解释为什么我的代码是错的?真的让我一直看到这个错误:P

enter image description here

1 个答案:

答案 0 :(得分:1)

DELIMITER 指令不属于MySQL数据库,而是属于mysql命令行客户端。

通常,mysql将分号(;)识别为输入结束标记,这会导致它将命令缓冲区的当前内容传输到数据库以供执行。使用 DELIMITER 指令允许您输入复合命令(例如,作为CREATE PROCEDURE的主体),组件简单命令以分号结束,而不会触发过早结束-of-输入。

MySQL Workbench还需要使用 DELIMITER 指令,但其他客户端则不需要,包括(我记得)phpMyAdmin。您可以轻松地通过实验验证。