триггер в MySQL вставляет несколько строк вместо одной - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь вставить сумму 4 столбцов из 4 разных таблиц в триггер отдельной таблицы (с именем bugs) следующим образом:

SELECT 
    uat_reopened_stats.release_name,
    (uat_reopened_stats.rate_bugs + qa_reopened_stats.rate_bugs + closed_reopened_stats.rate_bugs + done_reopened_stats.rate_bugs)
INTO @releasename, @bugstotalreopenrate  
FROM qa_reopened_stats
JOIN uat_reopened_stats 
    ON qa_reopened_stats.release_name = uat_reopened_stats.release_name
JOIN closed_reopened_stats 
    ON closed_reopened_stats.release_name = uat_reopened_stats.release_name
JOIN done_reopened_stats 
    ON done_reopened_stats.release_name = uat_reopened_stats.release_name;

INSERT INTO release_stats (release_name, bugs_total_reopen_rate)
VALUES (@releasename, @bugstotalreopenrate)
ON DUPLICATE KEY UPDATE 
    release_name=@releasename,
    bugs_total_reopen_rate=@bugstotalreopenrate;
END

Однако, когда триггер выполняется (ипредварительно имея таблицу release_stats, я получаю в итоге 11 (!) строк!

MySQL [jira_statistics]> select * from release_stats;
+--------------+------------------------+
| release_name | bugs_total_reopen_rate |
+--------------+------------------------+
| 2.3.0        | 9.090909004211426      |
| 2.3.0        | 9.090909004211426      |
| 2.3.0        | 9.090909004211426      |
| 2.3.0        | 9.090909004211426      |
| 2.3.0        | 9.090909004211426      |
| 2.3.0        | 9.090909004211426      |
| 2.3.0        | 9.090909004211426      |
| 2.3.0        | 9.090909004211426      |
| 2.3.0        | 9.090909004211426      |
| 2.3.0        | 9.090909004211426      |
| 2.3.0        | 9.090909004211426      |
+--------------+------------------------+

Почему это происходит?

1 Ответ

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

По какой-то причине проблема исчезла после установки release_name в качестве первичного ключа в таблице release_stats.

...