как организовать id

flash-vkv

Новичок
как организовать id

Есть такой вопрос как организовать id т.е. есть таблица для каждой записи нужно создать вроде этого
id stroka
1 значение
2 значение
3 значение
4 значение
5 значение
это вроде просто
но далие добавляем новую строку и тут надо сгенерировать id для этой строки
тоже просто находим max(id) потом +1 и порядок, но например до этого
я удалил третью строку и получил
id stroka
1 значение
2 значение
4 значение
5 значение
выше сказаным методом можно получить id = 6 но это как-то не красиво а надо получить id = 3
мысыль одна есть но она мне не нравится
я придумал пока так при удалении строки мы ее не удаляем а толко отмечаем как удаленую (пример столб. ud = 1) далие находим min(id) при ud = 1 , а если такой строки нет то max(id)+1
но тут я теряю в производительности и рамер БД растет от мусора, а подчистка таблицы еше усложняет код

мож кто знает болие красивые способы? :)
 

flash-vkv

Новичок
почитав и поразмыслев понял что необходимость в последователности id 12345 отподает в пользу 12456 причины описаны выше (путаница в id) но необходимость генерации id осталась в способе max(id)+1 есть глюк если удалим не 3-ю а 5-ю то после генерацииполучим id = 5
Выход я думаю такой: держать в таблице пустую строку с id = max

спасибо tony2001 что косвено поправил меня в вопросе
 

Фанат

oncle terrible
Команда форума
ничего хранить нигде не надо.
полю id надо присвоить атрибут auto_increment
и оно самостоятельно будет увеличиваться.

а поправлять тебя надо не косвенно, а кардинально. чтобы ты не изобретал велосипедов, а читал документацию
 

flash-vkv

Новичок
на такие тонкости обычно натыкаешся случайно
перелопатиш кило текста и кода а толку 0
а раз откроеш страницу и вот оно
потому и спрашиваю людей а auto_increment
сейчас посмотрю

да да то что надо но только это для MySql а для MSSQL я пока нечего подобное не нашел посматрю еше но ...
 

SelenIT

IT-лунатик :)
flash-vkv

Не путай понятия "id" и "№ п/п". Второе вообще не имеет смысла в базе - только в отсортированной выборке. А "id" скорее похож на "номер паспорта", его единственная задача - уникальная идентификация записи.
 

flash-vkv

Новичок
я знаю для чего нужен id
а вопрос стаит такой

Т.е. надо автоматически генерировать id для записей в таблице (по сути аналог счетчика в Access). Как это лучше сделать? в MSSQL

Я смотрел на форуме SQL.ru там эта тема обьемна расматривалась но решения вроде моего а то и круче наворочено
мой способ пока мне кажется проше и некоторые проблемы решает
 

alexhemp

Новичок
В MSSQL при создании таблицы указываешь INT IDENTITY

последний вставленный IDENTITY через переменную @@IDENTITY
 
Сверху