SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 23.04.2013 17:15:16

webber
Участник
Зарегистрирован: 20.02.2013
Сообщений: 9

Триггер и UPDATE

Есть таблица с плейлистами

CREATE TABLE IF NOT EXISTS `playlists` (
  `user_id` int(10) UNSIGNED NOT NULL,
  `track_id` int(10) UNSIGNED NOT NULL,
  `track_number` int(10) UNSIGNED DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;


Хочу написать триггер, который бы при изменении определенного `track_number` сдвигал и остальные `track_number` пользователя;
Вот, естественно не рабочий вариант)

DELIMITER //
CREATE TRIGGER fix_track_number AFTER UPDATE ON playlists FOR EACH ROW
BEGIN

DECLARE c int ;              
SET c = 1 ;                      

IF OLD.track_number>NEW.track_number THEN
WHILE c<OLD.track_number DO
UPDATE playlists SET track_number = OLD.track_number+c
WHERE user_id = OLD.user_id and track_number = OLD.track_number-c;
SET c = c + 1 ;
END WHILE ;
END IF;

END;
//
DELIMITER;


Идея в том, что если треку с `track_number` = 3 сделать `track_number` = 1, то нужно сдвинуть первый и второй треки на позицию выше, но все это не работает хотябы по тому, что я делаю UPDATE в той же таблице к которой привязан триггер...

Как по другому можно реализовать подобное?

Неактивен

 

#2 24.04.2013 12:21:26

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Триггер и UPDATE

Через триггер никак. Обновляйте через хранимую процедуру.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson