SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 16.09.2020 17:29:17

platedz
Старожил
Зарегистрирован: 27.03.2012
Сообщений: 314

Автоинкремент к удаленным полям

Здравствуйте. Можно как-то сделать добавление ключа по автоинкременту, чтобы пропущенные поля, начиная с 1000 id заполнялись как новые?

Т.е. скажем есть
id 1000
id 1001
id 1003

Вот нужно чтобы автоматом id 1002 при добавлении PRIMARY KEY (`id`) создавался, а не id 1004


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#2 16.09.2020 21:45:00

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Автоинкремент к удаленным полям

Нельзя.
А зачем такое нужно?

Неактивен

 

#3 16.09.2020 23:13:30

platedz
Старожил
Зарегистрирован: 27.03.2012
Сообщений: 314

Re: Автоинкремент к удаленным полям

Нужно чтобы id были всегда в одних пределах от 1000 до 9000 несмотря на то, что позиции постоянно обновляются.


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#4 16.09.2020 23:34:20

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Автоинкремент к удаленным полям

Заведите дополнительное поле, у которого значения будут в нужных пределах.

Неактивен

 

#5 22.09.2020 18:30:30

platedz
Старожил
Зарегистрирован: 27.03.2012
Сообщений: 314

Re: Автоинкремент к удаленным полям

А как определить что определенный ID свободен? Может какой-то метод или функция есть?

Отредактированно platedz (22.09.2020 18:42:38)


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#6 22.09.2020 22:59:01

platedz
Старожил
Зарегистрирован: 27.03.2012
Сообщений: 314

Re: Автоинкремент к удаленным полям

Я же не буду все перечислять, чтобы выявить свободный


Wazzup.su - это сервис объединивший в себе все в одном.

Неактивен

 

#7 23.09.2020 09:03:03

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Автоинкремент к удаленным полям

1. перебирать по возрастающей  значения пока не появится разрыв больше 1
2. сделать вспомогательную таблицу t (от 1000 до 9000) и

select min(t.`поле`) from t left join `исходная` q using(`поле`) where q.`поле` is null

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson