Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




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, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
18369



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |