от Blue на Сря Авг 25, 2010 1:22 pm
metala написа:Най-простото решение което виждам е с транзакция (а може и без) да се изтрие записа и после да намалиш останалите id-та с 1.
- Код: Избери целия код
START TRANSACTION;
DELETE FROM Groups WHERE id = 3;
UPDATE Groups SET id = id -1 WHERE id > 3;
ALTER TABLE table_name AUTO_INCREMENT = AUTO_INCREMENT - 1;
COMMIT;
Здравей Metala,
след като прегледах доста алтернативи, за MySql , не намерих команда за преномериране на автоматичния брояч и следователно, това което написа по горе ми е най-добрия вариант. Мерси! Има само един малък недостатък, всяка транзакция може да обработи само един запис, т.е. ако изтрия на куп три записа веригата се къса, евентуално може да се добави брояч на изтритите записи и с толкова да се намалява, но пак остава проблема при не последователни редове.
@Калата - точно това е смисъла, да си останат уникални id-тата, но и да са поредни. Не мисля, че тук е приложим алгоритъма на балона, защото нямам нужда от алгоритъм за пренареждане на масив, а от функция за запазване поредността на id-тата.
██████████████████████████████████████████████████████████████████
В една държава, която се управлява с разум, бедността и нищетата са срамни.
А в държава, която се управлява без разум, богатството и почестите са срамни!