mysql:触发器创建时无法识别新关键字

问题描述 投票:0回答:2

mysql.5.7工作

这是我的bugs

MySQL [jira_statistics]> describe bugs;
+---------------------------------------+--------------+------+-----+---------+-------+
| Field                                 | Type         | Null | Key | Default | Extra |
+---------------------------------------+--------------+------+-----+---------+-------+
| issue_key                             | varchar(45)  | NO   | PRI | NULL    |       |
| release_name                          | varchar(45)  | YES  | MUL | NULL    |       |
| issue_summary                         | varchar(200) | YES  |     | NULL    |       |
| story_points                          | int(11)      | NO   |     | 0       |       |
| qa_reopened                           | float        | NO   |     | 0       |       |
| done_reopened                         | float        | NO   |     | 0       |       |

此表通过定期调用LOAD DATA LOCAL INFILE bugs <file.csv>进行更新

每当发生此更新(可能更新现有行和/或插入新行)时,我希望通过以下触发器更新另一个具有某些已生成统计信息的表

create trigger update_bugs_stats after insert on `jira_statistics`.`bugs` for each row

begin

delimiter ;

 -- STORY POINTS -------------------------

SELECT AVG(story_points) INTO @avg_bugs_storypoints  FROM `jira_statistics`.`bugs` WHERE release_name = new.release_name;
SELECT MAX(story_points) INTO @max_bugs_storypoints FROM `jira_statistics`.`bugs` WHERE release_name = new.release_name;
SELECT MIN(story_points) INTO @min_bugs_storypoints  FROM `jira_statistics`.`bugs` WHERE release_name =  new.release_name;

INSERT INTO storypoints_stats (release_name, avg_bugs_storypoints, max_bugs_storypoints, min_bugs_storypoints)
VALUES (relName, @avg_bugs_storypoints, @max_bugs_storypoints, @min_bugs_storypoints)
ON DUPLICATE KEY UPDATE 
    relName=new.release_name,
    avg_bugs_storypoints=@avg_bugs_storypoints,
    max_bugs_storypoints=@max_bugs_storypoints,
    min_bugs_storypoints=@min_bugs_storypoints;

但是,每当尝试创建触发器时,这会给我以下错误:

new.release_name条款中的未知列where

为什么不识别new关键字?

mysql triggers mysql-5.7
2个回答
0
投票

因为new被保留为系统字

参考:https://dev.mysql.com/doc/refman/8.0/en/keywords.html

请修改

new.release_name  ==> `new`.`release_name`

等等..


0
投票

这个错误比我想象的更愚蠢;

我直接在sql查询编辑器上工作,而不是在mysql工作台的触发器选项卡上,所以它没有正确解析new关键字`。

© www.soinside.com 2019 - 2024. All rights reserved.