Я настраиваю таблицу, которая нуждается в двух автоматически увеличивающихся полях: «id» и «member #».
Я буду использовать AUTO_INCREMENT = 1001 для последних для новых данных, поскольку есть старые данные с номерами членов менее 1000.
Я буду использовать «MAX (id) +1» в поле 'id', чтобы автоматически увеличить его.
Но я не уверен, будет ли это работать всякий раз, когда есть INSERT, или даже где помещать этот бит кода. Все, что я пытаюсь сделать здесь, это автоматически увеличивать поле, ничего не выбирая.
И из любопытства, почему в таблице только одно поле AUTO_INCREMENTing?
Конечно, код AUTO_INCREMENT_2, AUTO_INCREMENT_3 и т. Д. c не может быть сложным.
Все ответы и помощь приветствуются.
===============================
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ И ССЫЛКИ
Извините за задержку с ответом, я проводил дополнительное исследование.
Хорошо, чтобы объяснить подробнее, у нас есть люди, присоединяющиеся к нашей группе через net. Таким образом, мы должны назначить уникальный номер участника каждому человеку. Два Джона Делает? Два разных номера участника. Для этого я установил для столбца № члена значение AUTO_INCREMENT, а затем AUTO_INCREMENT = 1001 в качестве параметра таблицы. Старые номера имеют три цифры, новые - четыре. Таким образом, каждый раз, когда кто-то регистрируется в сети как новый участник, появляется команда вставки, которая автоматически присваивает новому члену следующие четыре номера участника di git в серии.
member # INT (6) UNSIGNED NOT NULL UNIQUE KEY AUTO_INCREMENT И как опция таблицы AUTO_INCREMENT = 1001
Надеюсь, это понятно. Другими ситуациями, когда кто-то может захотеть использовать подобную стратегию, может быть назначение последовательных номеров счетов, номеров квитанций, номеров счетов и т. Д. c. Так как же один гарантирует результат +1, ie последовательных чисел?
Теперь нам также нужен столбец идентификатора таблицы. Многим таблицам нужен идентификатор таблицы. Ему также необходимо присвоить значение AUTO_INCREMENT, в нашем случае начиная с 1 и увеличивая на 1 (по умолчанию), чтобы идентифицировать и отличать guish одну строку от другой. Но, к сожалению, в таблице MySQL может быть только один столбец AUTO_INCREMENT. : - /
Таким образом, эта ситуация относится к классу проблем, известных как проблемы MAX + 1. (Это также может быть связано с решениями ROW_COUNT и LAST_INSERT_ID.) Ограничение одного поля AUTO_INCREMENT на таблицу требует обходного пути MAX + 1, и я ищу совет о наилучшем способе реализации этого. Например, есть ли способ установить это внутри самой команды CREATE TABLE при определении поля id? Или что-то еще такого же простого характера, например, написание функции. Действительно, предпочтительно оптимизировать эффективность и использовать только необходимые функции, а не реализовывать серию команд. Обычно предлагаемый обходной путь может быть следующим:
Lock tables membership write;
$max = SELECT MAX(id) FROM membership;
INSERT INTO membership ( id, firstname, lastname )
VALUES ($max+1 , 'jane', 'smith')
unlock tables;
Есть ли что-то лучше?
Как должны существовать функции AUTO_INCREMENT_2 / _3 .... Ну, я должен отметить, что в MySQL есть множество функций, которые я никогда не буду использовать, но, очевидно, кому-то они нужны. Тем не менее, было бы удобно иметь это для тех (редких) случаев, когда это может понадобиться. Возможно, следует провести различие между наличием функции и ее использованием в любой таблице. Я сомневаюсь, что неиспользуемая функция требует большого количества дополнительной памяти или кликов (которые в наши дни довольно дешевы).
Некоторые ссылки, которые могут оказаться полезными для понимания этой ситуации:
https://duckduckgo.com/?q=mysql+max%2B1+problems&t=ffab&atb=v1-1&ia=web
Вставьте и установите значение с помощью max () + 1 проблем
Проблема с MySql INSERT MAX () + 1
https://bugs.mysql.com/bug.php?id=3575
Все ответы, советы и помощь приветствуются.