mysql: новое ключевое слово не распознается при создании триггера - PullRequest
0 голосов
/ 18 февраля 2019

Работает на 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?

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

ошибка была более глупой, чем я думал;

Я работал непосредственно в редакторе запросов sql, а не на вкладке триггеров верстки mysql, поэтому он неправильно анализировал ключевое слово new.

0 голосов
/ 18 февраля 2019

Поскольку новое зарезервировано как системное слово

Ссылка: https://dev.mysql.com/doc/refman/8.0/en/keywords.html

Пожалуйста, измените

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

и т. Д.

...