2016-09-07 201 views
1

我想为我的数据库创建一个TRIGGER。代码是:'DELIMITER'附近的SQL语法错误

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和32年6月5日的MySQL版本),我得到了一个错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER' at line 1

我真不明白什么是错的。

+0

默认分隔符已经在第一行中尝试了'DELIMITER $$',所以'DROP TRIGGER ....'也将起作用 – RiggsFolly

+0

您的触发器对我的工作正常系统。尝试不用DELIMITER做任何事情,因为我听说PHPMyAdmin没有使用 – Drew

回答

0

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

+0

非常感谢,它工作)) –