Автоматичне збільшення в phpmyadmin


94

У мене є існуюча база даних за допомогою 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

Відповіді:


201

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

Клацніть на Таблиця > Вкладка Структура > У розділі Дія клацніть Основний (встановити як основний), клацніть на Змінити у спливаючому вікні, прокрутіть ліворуч і поставте прапорець A_I . Також переконайтеся, що ви вибрали None за замовчуваннямвведіть тут опис зображення


5
Оскільки функцію автоматичного включення було видалено з вкладки "Операції", схоже, це те, як це реалізувати зараз. Дякую, @AmitKB.
Mike S.

2
Однак коли я спробував отримати цю помилку: Query error: #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
Yaakov Ainspan

Повідомлення зрозуміле, можливо, ви намагаєтесь мати більше одного автоматичного стовпця.
Amit Bhagat

1
У мене була подібна проблема, і це
вирішило

1
вау, так просто. чому про це ніхто не згадав? мені знадобилося так багато часу, щоб знайти таку відповідь. безумовно найкраща відповідь.
oldboy

52

У phpMyAdmin перейдіть до відповідної таблиці та натисніть вкладку "Операції". Ліворуч у розділі Параметри таблиці вам буде дозволено встановити поточне значення AUTO_INCREMENT.


5
коли я роблю це, моїми двома варіантами щодо додавання auto_increment є "перемістити таблицю в" або "скопіювати таблицю в". я не хочу ні переміщувати, ні копіювати таблицю, а просто додати auto_increment. що відбувається?? я використовую MySQL v5.6.
oldboy

@oldboy Я отримую те саме, що і ти. Можливо, вони видалили цю функцію в нових версіях XAMPP PhpMyAdmin
kevind

21

Просто запустіть простий запит MySQL і встановіть номер автоматичного збільшення як завгодно.

ALTER TABLE `table_name` AUTO_INCREMENT=10000

Що стосується максимуму, наскільки мені відомо, такого не існує, і немає можливості обмежити таку кількість.

Це абсолютно безпечно і звичайна практика встановлювати номер ідентифікатора як первинний ключ, автоматично збільшуючи int. Існують такі альтернативи, як використання PHP для створення номерів членів для вас у певному форматі, а потім перевірка номера не існує до вставки, однак особисто для мене я б вибрав значення основного ідентифікатора auto_inc.


10
  1. На вкладці "Структура" вашої таблиці
  2. Клацніть на олівці змінної, яку потрібно автоматично збільшити
  3. на вкладці "Додатково" виберіть "auto_increment"
  4. потім перейдіть на вкладку "Операції" вашої таблиці
  5. У розділі "Параметри таблиці" -> тип автоматичного збільшення -> 10000

2

Якщо в phpMyAdmin ви налаштуєте поле у ​​вашій таблиці для автоматичного збільшення, а потім вставите рядок і встановите значення цього поля на 10000, воно продовжиться звідти.


2

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

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

можна вирішити, позначивши поле спочатку як ключ (використовуючи піктограму клавіші з основним ярликом), якщо у вас немає іншого ключа, тоді він може не працювати.


Так давно, як я грав з phpMyAdmin, я забув, як це зробити. Дякуємо за виправлення цієї другорядної проблеми. У мене це спрацювало.
rncrtr

0

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

Чому ви хочете верхню межу?


0

Це пов'язано з wp_terms, wp_termmetaіwp_term_taxonomy столи, які мали всі їх ID не встановленоAUTO_INCREMENT

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

Зробіть те саме, wp_termmetaі wp_term_taxonomyце вирішить проблему.


Здається, ви думаєте, що операційна програма використовує 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.