MySQL-триггер обновления ранжирования

Я создаю БД с таблицей «Команда» для некоторых команд НФЛ, и я присвоил им всем рейтинг (положение в НФЛ), атрибут называется «Рейтинг».

Я хочу создать триггер, чтобы при обновлении рейтинга все остальные обновлялись соответствующим образом.

Однако я не могу найти способ перебрать таблицу. Например, предположим, что команда с 5-го ранга поднимается на 3-й ранг. Как сделать так, чтобы 3-й ранг стал 4-м, а затем 4-й стал 5-м?

Если вам нужна дополнительная информация, не стесняйтесь спрашивать, я предоставлю ее как можно скорее.


person zomgcopters    schedule 01.05.2011    source источник


Ответы (1)


Если вы знаете идентификатор команды, которую нужно обновить (назовем его 42), а также старый и новый ранг (старый: 5, новый: 3), то это не так уж сложно:

UPDATE Team SET rank=rank+1 WHERE rank BETWEEN 3 AND 5;
UPDATE Team SET rank=3 WHERE id=42;
person Emil Vikström    schedule 01.05.2011
comment
Да, я узнаю идентификатор, который нужно обновить. Я думаю, это сработает, позвольте мне проверить, и я свяжусь с вами. Спасибо. - person zomgcopters; 02.05.2011
comment
Это сработало! Большое спасибо, в моем учебнике никогда не упоминалась команда BETWEEN, поэтому я не знал, что делать, и даже не искал в Интернете. - person zomgcopters; 02.05.2011
comment
Вы можете заменить BETWEEN ... AND ... на rank >= 3 AND rank <= 5 - person Emil Vikström; 18.04.2012