Как работает MySQL Auto Increment? - PullRequest
11 голосов
/ 30 декабря 2010

Я только что создал новую таблицу, используя MySQL Query Browser, и заметил, что в колонке автоинкремента есть галочка.Как это работает?

При программном добавлении в базу данных я просто добавляю число, а затем база данных автоматически увеличивает это число?

Каждый раз, когда НОВЫЙ пользователь регистрируется на моем сайте, яЯ хочу, чтобы их идентификатор клиента (только целое число) автоматически увеличивался, поэтому мне не нужно пытаться случайным образом генерировать уникальный номер.

Можно ли это сделать просто?

Спасибо!

Ответы [ 5 ]

16 голосов
/ 30 декабря 2010

При программном добавлении в базу данных я просто добавляю число, а затем база данных автоматически увеличивает это число?

Да, так работает auto_increment.

  • Значение будет увеличиваться для каждой новой строки

  • Значение уникально, дубликаты невозможны

  • Если строка удалена, столбец auto_increment этой строки переназначаться не будет.

  • Доступ к значению auto_increment последней вставленной строкииспользуя функцию mySQL LAST_INSERT_ID(), но она должна быть вызвана сразу после запроса вставки, в том же соединении с базой данных

ссылка на MySQL

4 голосов
/ 30 декабря 2010

еще 1, Вы также можете вставить свое собственное значение (то есть ваше случайное значение).

1 голос
/ 30 декабря 2010

Да. Столбцы Auto_Increment работают так, как они говорят на жестяной банке. Советы

  • при вставке используйте NULL или опустите столбец

  • Используйте LAST_INSERT_ID () (или эквиваленты API) для получения последнего сгенерированного значения.

  • по соображениям безопасности и бизнес-логики обычно лучше не использовать значение ключа для идентификатора клиента напрямую. Вместо этого рассмотрите возможность использования хэшированных / рандомизированных суррогатных ключей клиентов.

*

1017 Та *

1 голос
/ 30 декабря 2010

Когда вы включаете Автоинкремент, ID всегда будет добавляться автоматически при создании новой записи. Пример:

Если у вас есть 1 запись с ID 1 в вашей таблице, и вы добавляете новую запись,ID будет автоматически 2.

0 голосов
/ 30 декабря 2010

Да, это точное назначение AUTO_INCREMENT.Он просматривает текущее значение приращения для этой таблицы и автоматически сохраняет это значение плюс 1 для новой входящей строки.Вы можете опустить это поле в своих операторах INSERT, и MySQL будет обрабатывать его для вас для каждой новой строки, давая каждой строке свой уникальный идентификатор.

...