mysql错误,正确的语法使用''附近''

时间:2016-02-12 10:25:22

标签: mysql triggers

我的SQL代码有问题。我想创建一个触发器,就在这里。

CREATE TRIGGER `blog_after_insert` AFTER UPDATE ON `agent`

FOR EACH ROW 
BEGIN     
DECLARE costvalue INTEGER default 0;

IF (OLD.PacketStatusType_Id!=NEW.PacketStatusType_Id) THEN

        IF (OLD.Packet_Cost IS NULL) THEN
            SET costvalue = OLD.Packet_Cost;
        ELSE
            SET costvalue = OLD.Packet_SMSCount;
        END IF;

           IF (costvalue IS NOT NULL) THEN
               CALL tcksms_packet_update_proc(OLD.Transaction_Id,OLD.PacketStatusType_Id,costvalue,-1);
           ELSE
               CALL tcksms_packet_update_proc(OLD.Transaction_Id,OLD.PacketStatusType_Id,0,-1);
           END IF;


        DECLARE COST_VALUE_NEW INT DEFAULT 0;

        IF (NEW.Packet_Cost IS NULL) THEN
            SET COST_VALUE_NEW = NEW.Packet_Cost;
        ELSE
            SET COST_VALUE_NEW = NEW.Packet_SMSCount;
        END IF;

           IF (COST_VALUE_NEW IS NOT NULL) THEN
               CALL tcksms_packet_update_proc(NEW.Transaction_Id,NEW.PacketStatusType_Id,COST_VALUE_NEW,1);
           ELSE
               CALL tcksms_packet_update_proc(NEW.Transaction_Id,NEW.PacketStatusType_Id,0,1);
           END IF;

        ELSE



        END IF;

   END IF;
END    

但我得到了这个;

错误

SQL查询:

CREATE TRIGGER `blog_after_insert` AFTER UPDATE ON `agent` FOR EACH ROW BEGIN DECLARE costvalue INTEGER default 0;
  

MySQL说:文档> #1064 - 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获得正确的语法   靠近''第5行

那条线是 我尝试删除空格,组合了撇号('和`),删除并重新编写了一些行,但无法使其工作,这段代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

您需要在delimiter命令之前和之后使用create trigger命令,否则终止触发器主体内的命令的分号将使mysql混淆。请参阅defining stored programs上的mysql文档,其中还提供了如何使用delimiter命令的示例。