|
MySQL.RU - Webboard
Вернуться
rowid в mysql (Михаил) 08/11/2004 - 20:19:49
Re: rowid в mysql (Валентин) 08/11/2004 - 20:43:42
> Original message text:
> From: Михаил - 08/11/2004 - 20:19:49
> Subject:rowid в mysql
> -----------------
> Подскажите, как имитировать rowid для mysql. Способ с auto_increment я знаю. Но у него есть один недостаток: значение столбца монотонно наращивается, даже если записи с предыдущими значениями удалены. Когда же достигнуто максимальное значение для используемого типа данных, mysql при попытке добавить новую запись всегда пытается использовать максимальное значение и операция завершается с ошибкой duplicate key value. Программа, о которой идёт речь должна работать постоянно и записи в таблице будут постоянно удаляться и добавляться. Поэтому переполнение значения auto_increment столбца рано или поздно наступит.
>
> Спасибо
>
From: Валентин - 08/11/2004 - 20:43:42
Subject:rowid в mysql
-----------------
Можно проблему просто обойти, например в качестве ключа взять тип BIGINT - это очень много, больше чем "Программа, о которой идёт речь должна работать постоянно ",
В биллинговых системах стоит INTEGER, и хватает :)
А то, что данные будут удаляться, так это нормавльно, что что-то корректирется, добавляется...
Если таблица не связана с другими своим ключем, то можно просто время от времени делать следующуу операцию...
1) insert into tmp_table
select * from my_table;
2) truncate my_table; /*автоинкремент будет сброшен*/
3) insert into mytable
select all_fields_without_autoincrement; /*не брать поле с автоинкрементом*/
Вот и все :) табличка будет перестроена, и индексы и автоинкремент.
Это конечно не прямой ответ на вопрос, но рекльное решение.
А прямого ответа на вопрос нет. Сделать "умный" генератор можно только в триггере или хранимой процедуре, которой и добавлять в табличку.
Хранимые процедуры есть в 5.0.0 и 5.0.1
Элементарные триггера будут в 5.0.2
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
18369
|
|