Есть таблица с плейлистами
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 в той же таблице к которой привязан триггер...
Как по другому можно реализовать подобное?