Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » MySQL - auto_increment в id.

Ответить
Настройки темы
MySQL - auto_increment в id.

Аватара для LEXX2002

Пользователь


Сообщения: 90
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


В таблице 50 записей
id smallint(6) auto_increment
С 45 – 50 записи со временем были удалены. По идеи когда создается новая запись новый id должен быть 45, однако он ставит 51…
Где это храниться и как сбросить.


PS что такой форум стал тяжелый, по 300 кб одна страница :(, в Москве то траффик практически даром, но на куличках Мб довольно дорогой.

Отправлено: 13:41, 10-02-2005

 

Аватара для Oaxa

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вот так работает auto_increment.
По идее должно быть как раз 51, а не 45. auto_increment - это не порядковый номер записи, а счетчик, который генерит очередное число для каждой операции вставки, обеспечивая тем самым уникальность поля. Твою задачу, как мне кажется, возможно решить только испольуя внешнюю функцию для генерирования порядкового номера записи. правда, не совсем понятно, зачем всё это нужно...

-------
Adios, amigos, nos encontramos mas tarde, nos encontramos...


Отправлено: 14:03, 10-02-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


LEXX2002
1) все как сказал Oaxa
2) работа ведется... в ближайшее время будут результаты!

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 14:29, 10-02-2005 | #3


Аватара для LEXX2002

Пользователь


Сообщения: 90
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Писать функцию не есть хорошо .
Это надо читать все ID, и если есть промежуток в числовом ряде n! то пихать туда.
А нужно в принципе для красоты, а то ID меню идёт 1,2,3, и сразу 55.
Понятно, что auto_increment не будет искать свободное число в ряду, и пихнёт сразу последнее, хотя если ряд состоит 1,2,…45 и удаленные 46,47,48,49,50, то откуда он видит стоку 50, если её удалили.
Мануал не дал ответа, не очень владеем анг.

Отправлено: 14:44, 10-02-2005 | #4


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


LEXX2002
в общем все так как есть... а если ты поработаешь по больше создавая и проектирую базы данных, то поймешь что такая организация действительно правильная и удобная для постраения баз данных!

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 14:50, 10-02-2005 | #5


Аватара для Oaxa

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата:
Писать функцию не есть хорошо
Видится мне, что писать функцию, в твоем случае, не есть смысл. Хранить избыточные данные в базе исключительно для красоты? IMHO, Баловство это всё. Здесь без функции не обойтись. А теперь подумай, нужна ли тебе функция, создающая дополнительную нагрузку на сервер, и не выполняя никаких полезных действий, окромя обеспечения "красивости"? Хотя, если записей в таблице порядка 50, то вероятно это не очень критично. В Oracle, например, все решается намного проще, но всё равно, без дополнительной процедуры (внешней, или внутренней) не обойтись.

-------
Adios, amigos, nos encontramos mas tarde, nos encontramos...


Отправлено: 15:20, 10-02-2005 | #6


Аватара для archy

Ветеран


Сообщения: 659
Благодарности: 3

Профиль | Отправить PM | Цитировать


LEXX2002
При delete from table записи физически не удаляются, только помечаются как удаленные (чтоб не грузить сервер и диски сервера по перезаписи больших объемов данных, попробуй использовать optimize table, это очистит удаленные записи и возможно сбросит счетчик записей, но я не уверен про записи... вообщем пробуй

Отправлено: 17:34, 11-02-2005 | #7


Аватара для Oaxa

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


archy
Это не сбросит счетчик auto_increment , 100%. ты можешь установить этот счетчик в нужное значение, исполбзуя конструкцию типа:
ALTER TABLE tbl_name AUTO_INCREMENT = value;

-------
Adios, amigos, nos encontramos mas tarde, nos encontramos...


Отправлено: 19:15, 11-02-2005 | #8



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » MySQL - auto_increment в id.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
mysql simon171078 Вебмастеру 2 11-11-2008 22:25
MySQL - MySQL & MySQL-Front timon4ik Программирование и базы данных 2 06-04-2008 18:07
[MySQL]auto_increment и триггер Kerbit Вебмастеру 11 14-11-2006 21:43
MySQL alex r Общий по Linux 8 03-09-2003 11:04
MySQL UZER Хочу все знать 2 31-07-2003 00:22




 
Переход