Как работает MySQL Auto Increment?
Я просто создавал новую таблицу, используя MySQL Query Browser, и заметил там отметку в Auto Increment Column. Как это работает?
При добавлении в базу данных программно, просто я добавляю номер, а затем база данных автоматически увеличивает этот номер?
Каждый раз, когда новый пользователь регистрируется на моем сайте, я хочу, чтобы их идентификатор клиента (только целочисленный) автоматически увеличивался, поэтому мне не нужно пытаться случайным образом генерировать уникальный номер.
Можно ли это сделать просто?
Спасибо!
Ответы
Ответ 1
При добавлении в базу данных программно, просто я добавляю номер, а затем база данных автоматически увеличивает этот номер?
Да, работает auto_increment
.
-
Значение будет увеличено для каждой новой строки
-
Значение уникально, дубликаты невозможны
-
Если строка удалена, столбец auto_increment
этой строки не будет переназначен.
-
Значение auto_increment
последней вставленной строки можно получить с помощью функции mySQL LAST_INSERT_ID()
, но ее нужно вызвать сразу после запроса вставки в том же соединении с базой данных
mySQL Reference
Ответ 2
Еще 1,
Вы также можете вставить свое собственное значение (т.е. Ваше случайное значение).
Ответ 3
Когда вы включаете Auto Increment, идентификатор всегда будет автоматически добавляться всякий раз, когда будет сделана новая запись. Пример:
Если у вас есть 1 запись с идентификатором 1 в вашей таблице, и вы добавляете новую запись, идентификатор будет автоматически равен 2.
Ответ 4
Да. Столбцы Auto_Increment работают, как говорят на жестяне. Советы
-
когда INSERT - INING, используйте NULL или опустите столбец
-
Используйте LAST_INSERT_ID() (или эквиваленты API) для получения последнего сгенерированного значения.
-
по соображениям безопасности и бизнес-логики обычно лучше не использовать ключевое значение для идентификатора клиента. Вместо этого рассмотрите использование хешированных/рандомизированных суррогатных ключей клиента.
Та
Ответ 5
Да, это точная цель AUTO_INCREMENT
. Он смотрит на то, что является текущим значением приращения для этой таблицы, и сохраняет это значение плюс 1 для новой строки, которая приходит автоматически. Вы можете опустить это поле из своих операторов INSERT
, и MySQL будет обрабатывать его для вас для каждой новой строки, входящей в систему, предоставляя каждой строке свой собственный уникальный идентификатор.