AutoInc в MySQL
6 отговора
588 прегледа
AutoInc в MySQL
Здравейте.
Моля за един съвет когато бъде изтрит запис запис от база да кажем последният полето аутоинкремент при следващия запис не е върху мястото на изтрития а е на следващия.
Я дори аз като го чета не го разбирам. По добре с пример.
ID е тип аутоинк. и е стигнало до 50.
Ако изтрия 50 запис. Би трябвало следващия път при Инсърт ID да е пак 50, ама не е той е 51.
Има ли лесен начин да ги попренаредим ?

Моля за един съвет когато бъде изтрит запис запис от база да кажем последният полето аутоинкремент при следващия запис не е върху мястото на изтрития а е на следващия.
ID е тип аутоинк. и е стигнало до 50.
Ако изтрия 50 запис. Би трябвало следващия път при Инсърт ID да е пак 50, ама не е той е 51.
Има ли лесен начин да ги попренаредим ?
Re: AutoInc в MySQL
А какво ще пожелаеш да стане ако бъде изтрит 49-ия запис?
Или пък 17-ия?
Или пък 17-ия?
Re: AutoInc в MySQL
Хубаво би било да се попренаредът, ма ако не става то и така си бачка.
Е малко е дразнещо ама
Е малко е дразнещо ама
Редактирано от OLD FlEND на
Re: така и трябва да бъде
Този идентификатор най-често се използва за връзка към някоя друга таблица. Ако "рециклираш" изтрита стойност както ти искаш това ще наруши връзките.
Представи си, че имаш таблици student(id, name) и exam(student_id, date, score)
и имаш студент
50, Пешо
който се е издънил на изпитите през:
50, '2005-01-20', 2
50, '2005-01-25', 2
Изключваш Пешо и съответно го изтриваш от студентите. След това добавяш нов студент и какво се получава?
Ако е както ти искаш новия студент ще вземе id=50
50, Гошо
и изведнъж се оказва, че този новопостъпил студент вече има две двойки според таблицата с изпитите
50, '2005-01-20', 2
50, '2005-01-25', 2
salle.online.bg/sig
Представи си, че имаш таблици student(id, name) и exam(student_id, date, score)
и имаш студент
50, Пешо
който се е издънил на изпитите през:
50, '2005-01-20', 2
50, '2005-01-25', 2
Изключваш Пешо и съответно го изтриваш от студентите. След това добавяш нов студент и какво се получава?
Ако е както ти искаш новия студент ще вземе id=50
50, Гошо
и изведнъж се оказва, че този новопостъпил студент вече има две двойки според таблицата с изпитите
50, '2005-01-20', 2
50, '2005-01-25', 2
salle.online.bg/sig
Re: така и трябва да бъде
Да . Това което казваш е наистина вярно. Но аз питам дали е възможно чез определена настройка на Сървъра при определени условия аутоинка да спазва последователността?
Re: така и трябва да бъде
Още не съм намерил начин това да стане автоматично, особенно ако изтриеш не само последният ред.
Ако е само за последният ред с ALTER TABLE <name table> AUTO_INCREMENT = XX можеш да разрешиш проблема.
<name table> - име на таблицата,
XX - число от което искаш да брой,
Ако е само за последният ред с ALTER TABLE <name table> AUTO_INCREMENT = XX можеш да разрешиш проблема.
<name table> - име на таблицата,
XX - число от което искаш да брой,