AutoInc в MySQL

6 отговора 588 прегледа
#1

AutoInc в MySQL

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

Отговор
в отговор на OLD FlEND #2

Re: AutoInc в MySQL

А какво ще пожелаеш да стане ако бъде изтрит 49-ия запис?
Или пък 17-ия?

Отговор
в отговор на NDeu #3

Re: AutoInc в MySQL

Хубаво би било да се попренаредът, ма ако не става то и така си бачка.
Е малко е дразнещо ама

Редактирано от OLD FlEND на

Отговор
в отговор на OLD FlEND #4

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
Отговор
в отговор на salle #5

Re: така и трябва да бъде

Да . Това което казваш е наистина вярно. Но аз питам дали е възможно чез определена настройка на Сървъра при определени условия аутоинка да спазва последователността?

Отговор
в отговор на OLD FlEND #6

Re: така и трябва да бъде

Още не съм намерил начин това да стане автоматично, особенно ако изтриеш не само последният ред.
Ако е само за последният ред с ALTER TABLE <name table> AUTO_INCREMENT = XX можеш да разрешиш проблема.

<name table> - име на таблицата,
XX - число от което искаш да брой,

Отговор
в отговор на kacarov #7

Re: така и трябва да бъде

Благодаря.

Отговор