|
Тема |
Re: липсващи? [re: motokar4e] |
|
Автор |
salle (един такъв) |
|
Публикувано | 24.02.07 23:02 |
|
|
Имаш два много сериозни проблема едивият от които обезсмисял цялото начинание
1) Трябва да правиш допълнителна проверка за последния ред. Ако се вгледаме в твоя пример:
{1,2,3,4,6,7,8,9,11,12,13}
какво ни гарантира, че не е имало редове с id > 13 ?
Т.е. трябва да провериш каква е максимално използваната стойност а това не е толкова лесно. (Има различни начини, но няма да се спирам на тях)
2) Липсващите стойности не означават непременно изтрити редове. Няма начин да докажеш, че редовете с 5 и 10 от твоя пример въобще са съществували в таблицата.
Примери:
А. След реда с id=4 e изпълнена заявка INSERT INTO tbl (id) VALUES(6); Съответно брояча е преместен и следващата автоматично генерирана стойност е 7
Б. След реда с id=4 е броячът е променен "ръчно" на 6 с ALTER TABLE tbl AUTO_INCREMENT = 6; Съответно следващият INSERT ще генерира 6
В. Ако таблицата поддържа транзакции е напълно възможно редове 5 и 10 да са били "запазени" от отказани транзакции (ROLLBACK)
И в трите случая става въпрос за редове които никога не са съществували в таблицата.
Та въпросът защо ти е изобщо да си губиш времето с това е съвсем основателен.
|
| |
|
|
|