Я могу использовать нуль в столбце, который имеет атрибут AUTO_INCREMENT

Я использую сервер MySQL 5.0. Мое требование состоит в том, чтобы добавить одну специальную строку к существующей таблице, которая имеет автоинкрементный первичный ключ.

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

Теперь, я знаю, что MySQL не имеет никакой проблемы с Вами использующий Ваше собственное значение для столбца автоприращения, и мои тесты показали, что я могу установить автоинкрементный первичный ключ строки к 0 с Запросом на обновление. Однако некоторые вопросы были поставлены о том, как это могло бы влиять на автоинкрементную функциональность столбца в будущем, ВСТАВЛЯЕТ.

Мои (ограниченные) эксперименты не показали ничего странного, и я ничто не могу найти определенным предупреждением против этого в документах MySQL. Таким образом, кроме этого (шахта акцента): http://dev.mysql.com/doc/refman/5.0/en/create-table.html

Может быть только один столбец AUTO_INCREMENT на таблицу, он должен быть индексирован, и он не может иметь ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ. Столбец AUTO_INCREMENT работает правильно, только если он содержит только положительные значения. Вставка отрицательного числа рассматривается как вставка очень большого положительного числа. Это сделано для предотвращения проблем точности, когда числа “переносятся” от положительного до отрицания и также гарантировать, чтобы Вы случайно не получали столбец AUTO_INCREMENT, который содержит 0.

Я не могу найти объяснение что не так с наличием значения нуля в столбце AUTO_INCREMENT, таким образом, кто-либо может сказать мне при наличии столбца AUTO_INCREMENT, который содержит 0, плохая вещь?

5
задан Paddy O'Loughlin 18 February 2010 в 14:10
поделиться

1 ответ

Как вы уже обнаружили, невозможно присвоить 0 полю автоинкремента с помощью INSERT, вам нужно использовать UPDATE. AFAIK нет ничего плохого в том, чтобы иметь 0 в строке, кроме случаев, когда вы пытаетесь сбросить и импортировать. Но этого можно избежать, сначала вставив данные, а затем пометив их как поле с автоматическим приращением.

2
ответ дан 15 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: