|
|
|
| Доброго всем!
Собственно можно как-нибудь обнулить autoincrementный элемент в таблице без потери данных или сделать пересчет его значения? | |
|
|
|
|
|
|
|
для: Silentium
(14.12.2009 в 14:56)
| | Ммм... не очень понятно, что имеется в виду. Вы какого эффекта хотите добиться? Что делаете? | |
|
|
|
|
|
|
|
для: Silentium
(14.12.2009 в 14:56)
| | что именно Вы понимаете под потерей данных при таком действии? | |
|
|
|
|
|
|
|
для: Silentium
(14.12.2009 в 14:56)
| | Данные в таблице постоянно удаляются , записываются, соответственно ведется счет уникальных элементов (auto increment). Разрядность ID - int(5)-auto increment.
Допустим в таблице 1000 строк и Id последней строки 10000. Ясно, что если очистить таблицу, то подсчет уникальных значений начнется заново. Что будет когда элемент достигнет предела своей размерности?
Во общем мне нужно сохранить работоспособность таблицы при учете, что уникальный ID скоро достигнет своего предельного значения, а данные очистить в таблице я не могу, увеличить разрядность элемента для меня тоже не целесообразно! | |
|
|
|
|
|
|
|
для: Silentium
(15.12.2009 в 08:53)
| | Ничего не будет.
Когда первичный ключ дойдет до 2^31-1 (это около 2 миллиардов) - тогда система исчерпает ресурс.
Предел этот очень просто повысить до 4 миллиардов, и не очень сложно - до числа с 18 нулями.
Логическая компрессия пространства первичного ключа теоретически имеет право на существование,
но затрагивать должна всю БД (и возможно, связанную логику внешних процессов обработки данных).
И уж всяко эта процедура упирается не в трудность пересчета инкремента.
PS. У первичного ключа нет никакой разрядности. У него есть диапазон значений. И возможно - занимаемое место.
Разрядность для него - понятие крайне отвлеченное. | |
|
|
|