|
Проблема с auto_increment'ом.
|
|||
---|---|---|---|
#18+
Приветствую! У меня вопрос такой: удаляете, из таблицы, содержащей поле (назовем его id) типа auto_increment, скажем, последние сто записей. Осталось, к примеру четыреста, id последней из оставшихся равен, допустим, 400. Вставляете новую строку и id будет равен совсем даже не 401, а 501. Если данные регулярно удаляются из таблицы, и добавляется в нее, максимальное значение id рано или поздно будет превышать реальное число строк во много-много раз. Как с этим бороться? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2002, 16:38 |
|
Проблема с auto_increment'ом.
|
|||
---|---|---|---|
#18+
С этим боротся не надо, id нужен только для иднтификации. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2002, 18:00 |
|
Проблема с auto_increment'ом.
|
|||
---|---|---|---|
#18+
Действительно есть такой вопрос, но ни как не проблема! Причем с разными типами таблиц работает по разному! В конце концов есть такой вариант еще: после каждого удаления или перед вставкой, надо подсчитать что реже происходит выполняешь следующее: ALTER TABLE tbl_name AUTO_INCREMENT = 1 Соответственно попробует начать индекс с 1 (единицы) но а на самом деле начнет с максимального значения + 1! Но всеж надо FAQ повесить по MySQL! Загадочно, но по другим БД у людей такой вопрос не возникает, а вот с MySQL возникает! А ведь ответ прост - используй BIGINT! CREATE TABLE my_table ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, ); Такое значение может хранить в этих пределах: The unsigned range is 0 to 18446744073709551615 Не хватит? Не уверен! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2002, 10:18 |
|
|
start [/forum/topic.php?fid=47&fpage=713&tid=1856256]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
23ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 250ms |
total: | 422ms |
0 / 0 |