|
Создание триггера на изменение данных в таблице после INSERT в другой таблице
|
|||
---|---|---|---|
#18+
Здравствуйте, только начал пытаться осваивать MySQL. Вопрос по созданию триггера. У меня есть 2 таблицы: Students (Sno char(3), Sname char(8), Scount int) и Score(Sno char(3), Cno char(5), Degree decimal(4,1)). Нужно создать триггер, чтобы при добавлении информации об оценке студента через INSERT в таблицу Score, в таблице Student в соответствующей строке студента число Scount увеличивалось на 1. Вроде бы понятно объяснил. Никак не могу понять как правильно написать такой триггер, после инсерта с триггером число Scount увеличивается на неверное число. Помогите, пожалуйста Мой триггер Код: sql 1. 2. 3.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
И вот такой должен быть INSERT Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 13:40 |
|
Создание триггера на изменение данных в таблице после INSERT в другой таблице
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7.
fiddle Первая ошибка в том, что Вы делаете подзапрос в score , т.е. по всей таблице. А надо обращаться строго к значению текущей вставляемой записи, которая доступна через псевдотаблицу NEW. Вторая ошибка - в использовании BEFORE-триггера. Если запрос на вставку не выполнится по какой-то причине, значение всё равно обновится. Надо обновлять только тогда, когда вставка уже успешно выполнена. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 14:25 |
|
|
start [/forum/topic.php?fid=47&fpage=14&tid=1828303]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 131ms |
0 / 0 |