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秒
查询: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秒
查询:如果@m_last_number为null,则SET @m_last_number = 0
错误代码:1064 您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在'@m_last_number为null之后使用正确的语法 在第1行设置@m_last_number = 0'
执行时间:0秒 转移时间:0秒
查询:SET @m_last_number = @m_last_number + 1
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秒
查询:UPDATE work_item SET bug_number = @m_last_number WHERE id = NEW.id
错误代码:1054 'where子句'中的未知列'NEW.id'
执行时间: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秒
查询: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秒
查询:SET @m_last_number = @m_last_number + 1
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秒
查询:UPDATE work_item SET question_number = @m_last_number WHERE id = NEW.id
错误代码:1054 'where子句'中的未知列'NEW.id'
执行时间:0秒 转移时间:0秒
查询:结束END
错误代码:1064 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'end附近使用正确的语法 结束'第1行
执行时间:0秒 转移时间:0秒 总时间:0秒
答案 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 ;