Другие языки программирования и технологии
Авто инкремент в mySQL ?
У меня к примеру есть 5 строк (id 1-5), я их удаляю. Добавляю новую строку и авто инкремент присваивает ей id 6 (при том что это единственная строка в таблице) . Как сделать что бы он правильно нумеровал их. Т. е. новой строке давал id1 если она первая?
Первичные ключи бывают суррогатные и не суррогатные.
К примеру не суррогатный ключ.
В таблице "Города" 2 колонки ID и Наименование.
MSK, Москва
SPB, Санкт-Петербург
Или как вы хотите - 1,2.
Какие проблемы применения таких ключей?
У вас есть 1,2,3,4,5 города.
Вы удалили город 3. И стало
1,2,4,5.
Следовательно 4 и 5 должны будут быть отредактированы.
На них ссылается тьма тьмущая строк. Все связанные внешние ключи тоже должны будут быть откорректированы!! !
Поэтому не надо заморачиваться.
Ставите генератор и он считает 1,2,3,4,5, ..
Суррогатные ключи очень удобны, и не несут никакого смысла кроме как физического идентификатора. Внешние ключи лучше не редактировать.
А если вам нужно пронумеровать города - ну сделайте это из хранимой процедуры, добавьте колонку "порядковый номер".
Либо непосредственно в запросе получающем выборку делайте нумерацию строк. Либо если вы выводите строки в таблицу - нумеруйте их при получении из базы.
К примеру не суррогатный ключ.
В таблице "Города" 2 колонки ID и Наименование.
MSK, Москва
SPB, Санкт-Петербург
Или как вы хотите - 1,2.
Какие проблемы применения таких ключей?
У вас есть 1,2,3,4,5 города.
Вы удалили город 3. И стало
1,2,4,5.
Следовательно 4 и 5 должны будут быть отредактированы.
На них ссылается тьма тьмущая строк. Все связанные внешние ключи тоже должны будут быть откорректированы!! !
Поэтому не надо заморачиваться.
Ставите генератор и он считает 1,2,3,4,5, ..
Суррогатные ключи очень удобны, и не несут никакого смысла кроме как физического идентификатора. Внешние ключи лучше не редактировать.
А если вам нужно пронумеровать города - ну сделайте это из хранимой процедуры, добавьте колонку "порядковый номер".
Либо непосредственно в запросе получающем выборку делайте нумерацию строк. Либо если вы выводите строки в таблицу - нумеруйте их при получении из базы.
искать id самому и назначать его вручную.
вообще никогда не стоит уповать на то, что эти id будут идти по порядку. сейчас это так, да, но, по сути, mysql гарантирует только уникальность поля с ключом, а не порядок значений.
вообще никогда не стоит уповать на то, что эти id будут идти по порядку. сейчас это так, да, но, по сути, mysql гарантирует только уникальность поля с ключом, а не порядок значений.
Дропай поле автоинкремент и создавай его заново например.
смысла правда 0
ALTER TABLE table DROP `id`;
ALTER TABLE table ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
ALTER TABLE table ADD INDEX (`id`);
Если для красоты чтоб при селекте была норм нумирация делай по другому, добавляй при селекте ещё поле и там через переменные на скок я помню номируй
смысла правда 0
ALTER TABLE table DROP `id`;
ALTER TABLE table ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
ALTER TABLE table ADD INDEX (`id`);
Если для красоты чтоб при селекте была норм нумирация делай по другому, добавляй при селекте ещё поле и там через переменные на скок я помню номируй
TRUNCATE TABLE `Ваша_Таблица`
Похожие вопросы
- MySql в чем плюсы? Почему не обойтись?
- Вопрос про математические процессы инкрементов и декрементов с префиксами и постфиксами. C++
- PHP и MySQL. Пишу вот такой код, как в книге написано, но не работает. В чем причина?
- Помогите с MySQL
- Подробная установка связки Apache 2.0 + Php 5.1.4 + Mysql Server 4.1.16 под Win32 платформу
- Возникает ошибка в php mySQL. Подскажите, плиз.
- Работа с# и MySql
- Вопрос про MySQL. Собрался изучать MySQL к чему он прикручивается?
- Один вопрос оп PHP&MySQL
- mysql_query