Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Исправление автоинкрементных полей 
:(
    Опции темы
lavish
Дата 10.6.2004, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 28.5.2004

Репутация: нет
Всего: нет



Есть таблица Paradox, и у ней есть поле автоинкремент. Более того по этому полю сделан первичный индекс. Время от времени у поля слетает счетчик, причем назад... Т.е. например последнее присвоенное значение было 10, счетчик слетает назад на 5 и при добавлении новой записи автоинкремент выставляется на 5, но запись с таким значением уже была, естественно возникает ошибка "Key violation". Вопрос в следующем: может кто знает как можно взять эту таблицу и изменить там только счетчик, выставить его на нормальное число, при этом не трогая больше ничего в таблице..Интерисует именно как это сдлеать в программе, т.е. если кто знает, может библиотека такая есть (с этой функцией) или может кто структуру Paradox подскажет чтобы можно было прямо в файле все исправить.
PM MAIL   Вверх
MuToGeN
Дата 10.6.2004, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



В MySQL прокатывает
SQL
ALTER TABLE `имя таблицы` AUTO_INCREMENT = 562344;



--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
lavish
Дата 11.6.2004, 07:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 28.5.2004

Репутация: нет
Всего: нет



Не прокатило. Но зато нашел новый способ в дебрях интернета. Дело в том что значение автоинкремента хранится в фале по адресу $49, в итоге получаем такую программу (на Delphi)(код не мой, и изменять я его не стал, все работает):
------
procedure SetAutoIncInTable(ATablePath:string;ANewAutoInc:integer);
begin
with TFileStream.Create(ATablePath,fmOpenReadWrite)
do
try
Position:=$49;
Write(ANewAutoInc,SizeOf(ANewAutoInc));
finally
Free;
end;
end;
----
единственное, что следует проверить чтобы файл не был никем не занят, а так все ОК. Проверял на разных файлах с различной структурой, все было отлично...
Всем удачи..
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Другие СУБД | Следующая тема »


 




[ Время генерации скрипта: 0.0422 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.