Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];

Вниз

Как сбросить (обнулить) поле типа "автономер" в БД Paradox?   Найти похожие ветки 

 
Vlad2   (2005-09-16 11:23) [0]

В Парадоксе автономер целого типа, поэтому значение его ограничено, и периодически его надо сбрасывать, т.е. чтобы он присваивался сначала. Как можно сделать это программно в любой момент, не дожидаясь предела?
Спасибо.


 
Val ©   (2005-09-16 11:27) [1]

как он будет присваиваться сначала, если он должен быть уникальным?


 
Johnmen ©   (2005-09-16 11:29) [2]

>не дожидаясь предела?

А какой предел ?


 
Виталий Панасенко   (2005-09-16 11:31) [3]


>  Парадоксе автономер целого типа, поэтому значение его ограничено

Да уж.. И когда он до более чем 2 млрд дойдет ? посчитай... я думаю, лет через 20-30 реальной работы... если, конечно, данные не добавляются пачками по 100 млн. записей  в день...


 
Max Zyuzin ©   (2005-09-16 11:51) [4]

>Виталий Панасенко   (16.09.05 11:31) [3]
Только в таком случае парадок рухнет думается раньше...


 
Vlad2   (2005-09-16 11:59) [5]

Спасибо за реакцию. Важное примечание: автономер - не в первичном ключе.
Например, в базе 1000 записей, автономер - от 0 до 999. Первые 500 записей удалил, оставшиеся имеют номера с 500 до 999. Хочу, чтобы они имели номера с 0 по 499 (наверное, имею право :).
Конечно, можно формально в Desktop"е удалить это поле и опять ввести, получится то, что мне надо. Но можно ли сделать это программно, в run-time, без перестройки (Create) базы?


 
Johnmen ©   (2005-09-16 12:14) [6]

>Хочу, чтобы они имели номера с 0 по 499 (наверное, имею право :).

Право имеешь. Вот только смысл этого действа ? Обоснуй.


 
Виталий Панасенко   (2005-09-16 12:19) [7]

autoinc на то и autoinc, что сам по себе живет... Тогда используй Integer поле.. а то это как-то не логично получается... по определению поле так себя и должно вести (все время увеличиваться на 1).. а ты старешься его "заломать"...


 
Val ©   (2005-09-16 12:36) [8]

а если удалял не первые 500, а через одну? или всего одну, 2, 3? что предполагается делать?


 
Sergey13 ©   (2005-09-16 12:39) [9]

2[5] Vlad2   (16.09.05 11:59)
>Например, в базе 1000 записей, автономер - от 0 до 999.
И он достиг мыслимого предела.

>Первые 500 записей удалил, оставшиеся имеют номера с 500 до 999. Хочу, чтобы они имели номера с 0 по 499 (наверное, имею право :).
Смысла в таком поле, ИМХО, немного. RecNo дублируешь?


 
Vlad2   (2005-09-16 13:29) [10]

Это поле имеет вспомогательное значение - "окрашивает" записи для дальнейшего использования значений других полей в вычислительном комплексе (научная задача). Поэтому удобно, чтобы это делалось в автомате, чтобы я не заботился об уникальности его значения.
Периодически (раз в несколько месяцев) достигается предел значений, хотя база не очень большая (от нескольких тасяч до нескольких ( редко 2-3) сотен тыс. записей), но находится в интенсивном режиме модификаций (удаления и добавления). Просто хотелось снять эту проблему, чтобы значения автономера обновлялись сами при превышении какого-то порога.


 
Anatoly Podgoretsky ©   (2005-09-16 13:46) [11]

Vlad2   (16.09.05 11:23)  
Ты уже достиг хотя бы одного процента?


 
Виталий Панасенко   (2005-09-16 14:23) [12]

Если задача однопользовательская (для безопасности), то
> Смысла в таком поле, ИМХО, немного. RecNo дублируешь?

используй вычисляемое поле, которому присваивай RecNo... Все будет в шоколаде...


 
Vlad2   (2005-09-16 14:44) [13]

Anatoly Podgoretsky ©   (16.09.05 13:46) [11]
> Ты уже достиг хотя бы одного процента?
Процента чего?

К сожалению, при добавлении записей значение автономера только увеличивается, а не принимает отсутствующие (после удаления) номера.

Виталий Панасенко   (16.09.05 14:23) [12]
> Если задача однопользовательская (для безопасности)
Этот номер используется и другими пользователями и другими задачами.
Использовать RecNo не могу, т.к. он изменится, если я сделаю другую выборку по базе.

Я благодарен всем откликнувшимся, и понимаю так, что нет способа, кроме перестроения базы, программно перенумеровать автономер.


 
Val ©   (2005-09-16 15:31) [14]

это без вариантов.


 
Anatoly Podgoretsky ©   (2005-09-16 16:03) [15]

Достиг ли у тебя этот номер значения 40 000 000? Если достиг то за какое время, затем можешь умножить на 100
И конечно база раньше прекратит жить.


 
Vlad2   (2005-09-16 16:26) [16]

Anatoly Podgoretsky ©   (16.09.05 16:03) [15]

Как я писал, - за несколько (3-4) месяцев. Но перенумерация нужна чаще и по другим (алгоритмическим) причинам в чужих программах, которые (эти причины) я устранить не могу. Спасибо.


 
Anatoly Podgoretsky ©   (2005-09-16 16:31) [17]

Ты хочешь сказать что за 3 месяца в таблицу добавляется 4 миллиарда записей и столько же удаляется, не поверю. Не того маштаба Парадокс что бы подобное тянуть.


 
Vlad2   (2005-09-16 17:00) [18]

Anatoly Podgoretsky ©   (16.09.05 16:31) [17]
Может быть, и за пол-года. Задача оперативная, работает круглосуточно в режиме удаления/добавления. В зависимости от интенсивности срок может быть и больше полугода и меньше. Сама база относительно небольшая, периодически реструктуризируется (DbiDoRestructure), поэтому парадокс и держится. Конечно, мы сознаём, что это далеко не лучший вариант, но до другого пока руки не доходят. А 4 млрд нам тоже сначала казалось нереальным :-).

Кстати, доп. вопрос: можно ли убить поле в заполненной базе, а потом опять образовать  (программно)?

Спасибо всем.


 
Anatoly Podgoretsky ©   (2005-09-16 18:23) [19]

Создавай новую таблицу и копируй туда нужные данные. Если копировать не требуется, то EmptyTable


 
Vlad2   (2005-09-18 22:22) [20]

Спасибо большое за помощь. Так и сделаю.


 
Виталий Панасенко   (2005-09-19 10:45) [21]

Кажись это
> Если копировать не требуется, то EmptyTable

не поможет. CreateTable


 
Anatoly Podgoretsky ©   (2005-09-19 10:49) [22]

Виталий Панасенко   (19.09.05 10:45) [21]
По непровереным данным, для Парадокса при EmptyTable? производится обнуление автоинкримента. Почему по непроверенным, а потому что я никогда не пойду на Парадокс, а применю скажем dBase или что то другое, например Акцесс, хоть и не лежит к нему душа.


 
Виталий Панасенко   (2005-09-19 11:28) [23]

Нет, не обнуляется...



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.039 c
5-1093549702
Jetus
2004-08-26 23:48
2005.10.30
Выделение дней в календаре


14-1128777312
SSSQQQ
2005-10-08 17:15
2005.10.30
Как в Delphi можно работать одновременно с двумя проектами


14-1128521342
Begin
2005-10-05 18:09
2005.10.30
Блок - схема по тексту процедуры...


8-1117828011
Crazy_Diman
2005-06-03 23:46
2005.10.30
проблема с Timage


1-1128618673
oleg_SYS
2005-10-06 21:11
2005.10.30
Как заблокировать выключение компьютера?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский