无法在MySQL

时间:2016-10-03 09:10:11

标签: mysql

enter code hereCREATE 
/*!50017 DEFINER = 'root'@'localhost' */ 
TRIGGER `update_bug_question_number_after_insert` AFTER INSERT ON `work_item` 
FOR EACH ROW BEGIN 
    SET @m_last_number := 0; 
IF (NEW.type = 1) THEN 
    BEGIN 
        SELECT last_bug_number FROM work_item WHERE id = NEW.parent_work_item_id INTO @m_last_number; 
        IF @m_last_number IS NULL THEN 
            SET @m_last_number = 0; 
        /* inscrease last bug number */ 
        SET @m_last_number = @m_last_number + 1; 
        /* update last bug number parent work item*/ 
        UPDATE work_item SET last_bug_number = @m_last_number WHERE id = NEW.parent_work_item_id; 
        /* update bug number current work item*/ 
        UPDATE work_item SET bug_number = @m_last_number WHERE id = NEW.id; 
    END 
ELSE IF (NEW.type - 4) THEN 
    BEGIN 
        SELECT last_question_number FROM work_item WHERE id = NEW.parent_work_item_id INTO @m_last_number; 
        IF @m_last_number IS NULL THEN 
            SET @m_last_number = 0; 
        /* inscrease last bug number */ 
        SET @m_last_number = @m_last_number + 1; 
        /* update last bug number parent work item*/ 
        UPDATE work_item SET last_question_number = @m_last_number WHERE id = NEW.parent_work_item_id; 
        /* update bug number current work item*/ 
        UPDATE work_item SET question_number = @m_last_number WHERE id = NEW.id; 
    END 
END;

消息显示:

12 queries executed, 2 success, 10 errors, 0 warnings

查询:创建0017 DEFINER ='root'@'localhost'* / TRIGGER update_bug_question_number_after_insert插入work_item FOR EA ...后

错误代码:1064 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第5行的''附近使用正确的语法

执行时间:0秒 转移时间:0秒

总时间:0秒

查询:if(NEW.type = 1)然后开始从work_item中选择last_bug_number,其中id = NEW.parent_work_item_id为@m_last_number

错误代码:1064 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'if(NEW.type = 1)附近使用正确的语法         开始             从第1行的work_it'中选择last_bug_number

执行时间:0秒 转移时间:0秒

总时间:0秒

查询:如果@m_last_number为null,则SET @m_last_number = 0

错误代码:1064 您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在'@m_last_number为null之后使用正确的语法                 在第1行设置@m_last_number = 0'

执行时间:0秒 转移时间:0秒

总时间:0秒

查询:SET @m_last_number = @m_last_number + 1

0行受影响

执行时间:0秒 转移时间:0秒

总时间:0秒

查询:更新work_item设置last_bug_number = @m_last_number其中id = NEW.parent_work_item_id

错误代码:1054 'where子句'

中的未知列'NEW.parent_work_item_id'

执行时间:0秒 转移时间:0秒

总时间:0秒

查询:UPDATE work_item SET bug_number = @m_last_number WHERE id = NEW.id

错误代码:1054 'where子句'中的未知列'NEW.id'

执行时间:0秒 转移时间:0秒

总时间:0秒

查询:结束ELSE IF(NEW.type - 4)然后开始SELECT last_question_number FROM work_item WHERE id = NEW.parent_work_item_id INTO @m_last ...

错误代码:1064 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'end附近使用正确的语法     ELSE IF(NEW.type - 4)然后         开始             在第1行选择last_question_num'

执行时间:0秒 转移时间:0秒

总时间:0秒

查询:IF @m_last_number IS NULL,然后设置@m_last_number = 0

错误代码:1064 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'IF @m_last_number IS NULL THEN附近使用正确的语法                 在第1行设置@m_last_number = 0'

执行时间:0秒 转移时间:0秒

总时间:0秒

查询:SET @m_last_number = @m_last_number + 1

0行受影响

执行时间:0秒 转移时间:0秒

总时间:0秒

查询:UPDATE work_item SET last_question_number = @m_last_number WHERE id = NEW.parent_work_item_id

错误代码:1054 'where子句'

中的未知列'NEW.parent_work_item_id'

执行时间:0秒 转移时间:0秒

总时间:0秒

查询:UPDATE work_item SET question_number = @m_last_number WHERE id = NEW.id

错误代码:1054 'where子句'中的未知列'NEW.id'

执行时间:0秒 转移时间:0秒

总时间:0秒

查询:结束END

错误代码:1064 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'end附近使用正确的语法     结束'第1行

执行时间:0秒 转移时间:0秒 总时间:0秒

1 个答案:

答案 0 :(得分:0)

尝试这种方式:

DELIMITER $$
/*!50017 DEFINER = 'root'@'localhost' */ 
create TRIGGER `update_bug_question_number_after_insert` AFTER INSERT ON `work_item` FOR EACH ROW 

BEGIN 
    SET @m_last_number := 0; 
IF (NEW.type = 1) THEN 

        SELECT last_bug_number FROM work_item WHERE id = NEW.parent_work_item_id INTO @m_last_number; 
        IF @m_last_number IS NULL THEN 
            SET @m_last_number = 0; 
        /* inscrease last bug number */ 
        SET @m_last_number = @m_last_number + 1; 
        /* update last bug number parent work item*/ 
        UPDATE work_item SET last_bug_number = @m_last_number WHERE id = NEW.parent_work_item_id; 
        /* update bug number current work item*/ 
        UPDATE work_item SET bug_number = @m_last_number WHERE id = NEW.id; 
  END IF;
ELSEIF  (NEW.type - 4) THEN 

        SELECT last_question_number FROM work_item WHERE id = NEW.parent_work_item_id INTO @m_last_number; 
        IF @m_last_number IS NULL THEN 
            SET @m_last_number = 0; 
        /* inscrease last bug number */ 
        SET @m_last_number = @m_last_number + 1; 
        /* update last bug number parent work item*/ 
        UPDATE work_item SET last_question_number = @m_last_number WHERE id = NEW.parent_work_item_id; 
        /* update bug number current work item*/ 
        UPDATE work_item SET question_number = @m_last_number WHERE id = NEW.id; 


      END IF;
  END IF;
END;
$$
DELIMITER ;