Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: auto_increment  (Прочитано 14795 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Шнибл
Помогающий

ru
Offline Offline
Пол: Мужской

« : 06-05-2006 08:34 » 

Есть такой идентификатор в таблице: "id tinyint unsigned not null auto_increment primary key"

было 10 записей, удляем все, кроме 5. Добавляем новую, mySQL присваивает ей id = 11.
Как такие вещи лечатся ?  посмотрел Mysql administratorom действительно в таблице есть свойство Auto Increment которе хранить значение (в нашем случае 11), можно как нибуть это значение поправить запросом ?

Еще маленький вопрос, есть ли в mySQL логический тип данный, нашел "Bit" и "Bool" но там же и приписка была, что это синонимы Tinyint а значит память отводится 1 байт, либо -127..128 либо 0..255. ?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 06-05-2006 08:58 » 

Шнибл, это нормальное поведение. Следующий номер хранится в описании таблицы и может только расти. Руками поправить можно (ALTER TABLE), но это не правильно.

Если у тебя в таблице один столбец с логическим значением, то экономить нечего - память меньше чем по байту выделяться не может. Если значений много, то можно использовать тип SET (читай мануал) или использовать числа как битовые массивы.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Шнибл
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 06-05-2006 09:40 » 

По поводу логических типов, спасибо разъяснили ситуацию.
По поводу alter table не могли бы привести пример, такая штука -  "alter table ХХХ alter id set default ХХ" - не пашет.
"ALTER TABLE Users AUTO_INCREMENT = 1" тоже..
единственно что получилось сбросить счетчик на 0, запросом: "ALTER TABLE Users CHANGE id id TINYINT NOT NULL"
« Последнее редактирование: 06-05-2006 10:25 от Шнибл » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 06-05-2006 10:35 » 

Шнибл, зачем гадать - мануал для чего?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Шнибл
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 06-05-2006 10:59 » 

Получается ALTER TABLE Users AUTO_INCREMENT = 1 рабочий запрос. Просто, те запросы, когда AUTO_INCREMENT ставится значение меньше чем уже существут записи в таблице, то такие запросы игнорируется.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 06-05-2006 11:26 » new

Шнибл, логично. Такие возможности были посчитаны как баги и запрещены еще в древних версиях 3.23, а до этого значение заворачивалось (переполнение).
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines