在“DELIMITER'附近的SQL语法错误

时间:2016-09-07 12:20:51

标签: mysql sql triggers syntax-error

我想为我的数据库创建一个TRIGGER。代码是:

DELIMITER ;

DROP TRIGGER  IF EXISTS `spi_financial_request_AINS`;

DELIMITER $$

CREATE
    DEFINER = CURRENT_USER 
    TRIGGER `spi_financial_request_AINS` AFTER INSERT ON   `spi_financial_request` 
    FOR EACH ROW BEGIN    
            DECLARE ev_id INT;       
                IF check_audit('spi_financial_request')=1 THEN  
              INSERT INTO spi_audit_event(table_name, record_id,event_type,user_id)
              VALUES('spi_financial_request',new.id,'INS',@user_id);
                  SELECT LAST_INSERT_ID() INTO ev_id;
INSERT INTO spi_audit_data(event_id,column_name,new_value)VALUES(ev_id,'id',new.id);
INSERT INTO spi_audit_data(event_id,column_name,new_value)VALUES(ev_id,'request_id',new.request_id);
INSERT INTO spi_audit_data(event_id,column_name,new_value)VALUES(ev_id,'payment_type_id',new.payment_type_id);
            END IF;
        END;
$$

DELIMITER ;

我已经在我的本地站点上执行了它(使用SQLyog和5.6.29版本的MySQL)。它有效。

但是当我尝试在DEV服务器上使用它时(使用PHPMyAdmin和5.6.32版本的MySQL),我发现了一个错误:

  

#1064 - 您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在“DELIMITER”附近使用' DELIMITER'在第1行

我真的不明白出了什么问题。

1 个答案:

答案 0 :(得分:0)

DELIMITER是一个Mysql控制台命令,你不能在phpmyadmin中使用它。要在phpmyadmin中设置分隔符,see this other answer