Автоинкремент в phpmyadmin


96

У меня есть существующая база данных с использованием PHP, MySQL и phpMyAdmin.

Когда пользователи становятся участниками моего веб-сайта, мне нужно, чтобы система создала для них уникальный номер участника, используя пятизначный номер. например, 83773. Я предполагаю, что это похоже на генерацию случайного пароля, за исключением того, что мне нужны только числа для моих участников. Этот идентификационный номер должен быть уникальным для каждого участника.

Могу ли я установить для первичного ключа auto_increment в моей пользовательской таблице значение, начинающееся с 10000, а затем автоматически увеличивать его каждый раз, когда член регистрируется?

Кроме того, существует ли максимальное число, до которого может подняться идентификационный номер первичного ключа?

Является ли это надежным и безопасным способом использования идентификационного номера первичного ключа в качестве номера участника?


3
Некоторые из приведенных ниже людей ответили, что нет верхнего предела для первичного ключа, но я бы предположил, что верхний предел - это максимальный размер выбранного вами типа данных ... может быть, я ошибаюсь, но не будет тогда ограничено максимальным значением 4294967295? dev.mysql.com/doc/refman/5.0/en/numeric-types.html
Сэм,

Пожалуйста, заберите принятый ответ. Я думаю, что это тот самый stackoverflow.com/a/18942684/248616
Nam G VU

Ответы:


202

Есть возможные шаги, чтобы включить автоматическое приращение для столбца. Я предполагаю, что версия phpMyAdmin - 3.5.5, но не уверен.

Щелкните Таблица > вкладка Структура > Под действием Щелкните Основной (установить как основной), щелкните Изменить во всплывающем окне, прокрутите влево и проверьте A_I . Также убедитесь, что вы выбрали « Нет» для параметра « По умолчанию».введите описание изображения здесь


5
Поскольку функция auto-inc была удалена со вкладки «Операции», похоже, что сейчас ее можно реализовать именно так. Спасибо, @AmitKB.
Майк С.

2
Однако, когда я попытался это сделать, я получил Query error: #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
следующую

Сообщение ясное, возможно, вы пытаетесь создать несколько автоматических столбцов.
Амит Бхагат

1
Если бы подобный вопрос и это фиксированная моя проблема
Callat

1
вау, так просто. почему об этом никто не упомянул? Мне потребовалось много времени, чтобы найти такой ответ. безусловно лучший ответ.
oldboy

53

В phpMyAdmin перейдите к нужной таблице и щелкните вкладку «Операции». Слева под опциями таблицы вам будет разрешено установить текущее значение AUTO_INCREMENT.


5
когда я делаю это, у меня есть только два варианта добавления auto_increment: «переместить таблицу в» или «скопировать таблицу в». Я не хочу ни перемещать, ни копировать таблицу, а просто добавляю auto_increment. что происходит?? Я использую MySQL v5.6.
oldboy

@oldboy Я такой же, как ты. Возможно, они удалили эту функцию в более новых версиях XAMPP
PhpMyAdmin

21

Просто запустите простой запрос MySQL и установите для числа автоинкремента все, что захотите.

ALTER TABLE `table_name` AUTO_INCREMENT=10000

Что касается максимума, насколько мне известно, его нет и нет возможности ограничить такое количество.

Это совершенно безопасно, и это обычная практика - установить номер идентификатора в качестве основного ключа, автоматически увеличивая int. Существуют альтернативы, такие как использование PHP для генерации номеров членства для вас в определенном формате, а затем проверка того, что номер не существует до вставки, однако лично для меня я бы выбрал значение основного идентификатора auto_inc.


10
  1. На вкладке «Структура» вашей таблицы
  2. Щелкните карандаш с нужной переменной auto_increment
  3. на вкладке «Дополнительно» выберите «auto_increment»
  4. затем перейдите на вкладку «Операции» своей таблицы
  5. В разделе «Параметры таблицы» -> тип auto_increment -> 10000

2

В phpMyAdmin, если вы настроили поле в своей таблице для автоматического увеличения, а затем вставили строку и установили значение этого поля на 10000, он продолжится оттуда.


2

@AmitKB, Ваша процедура правильная. Хотя эта ошибка

Ошибка запроса: # 1075 - Неверное определение таблицы; может быть только один автоматический столбец, и он должен быть определен как ключ

можно решить, сначала пометив поле как ключевое (используя значок ключа с меткой primary), если у вас нет другого ключа, это может не сработать.


Я так давно не играл с phpMyAdmin, что забыл, как это делать. Спасибо за исправление этой второстепенной проблемы. У меня это сработало.
rncrtr

0

Вы не можете установить максимальное значение (кроме выбора типа данных, который не может содержать большие числа, но нет таких, которые имеют требуемый вами предел). Вы можете проверить это с помощью LAST_INSERT_ID () после вставки, чтобы получить идентификатор вновь созданного члена, и, если он слишком большой, обработайте его в коде вашего приложения (например, удалите и отклоните член).

Почему вам нужен верхний предел?


0

Это связано с таблицами wp_terms, wp_termmetaи wp_term_taxonomy, все идентификаторы которых не установлены наAUTO_INCREMENT

Для этого перейдите в phpmyadmin, щелкните базу данных, wp_termsтаблицу, щелкните вкладку структуры, справа вы увидите вкладку с именем A_I(AUTO_INCREMENT), отметьте ее и сохраните (вы делаете это только для первого варианта, если wp_termвы только делаю это для term_id).

Сделайте то же самое для, wp_termmetaи wp_term_taxonomyэто решит проблему.


Похоже, вы думаете, что OP использует WordPress, где вы нашли эту информацию? Я не могу найти никаких ссылок на WP в вопросе.
Рауль

0

(а) Просто щелкните свою базу данных, выберите свою таблицу. Щелкните «Операции». В разделе «Параметры таблицы» измените значение AUTO_INCREMENT на желаемое, в данном случае: 10000 нажмите «Перейти». (См. Изображение в приложении)

(b) Кроме того, вы можете запустить команду SQL на вкладке SQL после выбора таблицы. Просто введите «ALTER TABLE имя_таблицы AUTO_INCREMENT = 10000;» затем нажмите "Перейти". Это оно!! НАСТРОЙКА ЗНАЧЕНИЯ АВТОМАТИЧЕСКОГО УВЕЛИЧЕНИЯ изображение (a)

НАСТРОЙКА ЗНАЧЕНИЯ АВТОМАТИЧЕСКОГО УВЕЛИЧЕНИЯ изображение (B)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.