|
|
|
Создание триггера на изменение данных в таблице после 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: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 382ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...