Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обнуление уникального элемента без потери данных?
 
 автор: Silentium   (14.12.2009 в 14:56)   письмо автору
 
 

Доброго всем!
Собственно можно как-нибудь обнулить autoincrementный элемент в таблице без потери данных или сделать пересчет его значения?

  Ответить  
 
 автор: cheops   (14.12.2009 в 15:31)   письмо автору
 
   для: Silentium   (14.12.2009 в 14:56)
 

Ммм... не очень понятно, что имеется в виду. Вы какого эффекта хотите добиться? Что делаете?

  Ответить  
 
 автор: Trianon   (14.12.2009 в 15:35)   письмо автору
 
   для: Silentium   (14.12.2009 в 14:56)
 

что именно Вы понимаете под потерей данных при таком действии?

  Ответить  
 
 автор: Silentium   (15.12.2009 в 08:53)   письмо автору
 
   для: Silentium   (14.12.2009 в 14:56)
 

Данные в таблице постоянно удаляются , записываются, соответственно ведется счет уникальных элементов (auto increment). Разрядность ID - int(5)-auto increment.
Допустим в таблице 1000 строк и Id последней строки 10000. Ясно, что если очистить таблицу, то подсчет уникальных значений начнется заново. Что будет когда элемент достигнет предела своей размерности?
Во общем мне нужно сохранить работоспособность таблицы при учете, что уникальный ID скоро достигнет своего предельного значения, а данные очистить в таблице я не могу, увеличить разрядность элемента для меня тоже не целесообразно!

  Ответить  
 
 автор: Trianon   (15.12.2009 в 08:58)   письмо автору
 
   для: Silentium   (15.12.2009 в 08:53)
 

Ничего не будет.
Когда первичный ключ дойдет до 2^31-1 (это около 2 миллиардов) - тогда система исчерпает ресурс.
Предел этот очень просто повысить до 4 миллиардов, и не очень сложно - до числа с 18 нулями.

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

PS. У первичного ключа нет никакой разрядности. У него есть диапазон значений. И возможно - занимаемое место.
Разрядность для него - понятие крайне отвлеченное.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования