![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сбросить (обнулить) поле типа "автономер" в БД Paradox? [D6, Paradox]
Vlad2 © (2005-09-16 11:23:00)В Парадоксе автономер целого типа, поэтому значение его ограничено, и периодически его надо сбрасывать, т.е. чтобы он присваивался сначала. Как можно сделать это программно в любой момент, не дожидаясь предела?
Спасибо.
Виталий Панасенко (2005-09-19 11:28:00) [1]Нет, не обнуляется...
Anatoly Podgoretsky (2005-09-19 10:49:00) [2]Виталий Панасенко (19.09.05 10:45) [21]
По непровереным данным, для Парадокса при EmptyTable? производится обнуление автоинкримента. Почему по непроверенным, а потому что я никогда не пойду на Парадокс, а применю скажем dBase или что то другое, например Акцесс, хоть и не лежит к нему душа.
Виталий Панасенко (2005-09-19 10:45:00) [3]Кажись это
> Если копировать не требуется, то EmptyTable
не поможет. CreateTable
Vlad2 (2005-09-18 22:22:00) [4]Спасибо большое за помощь. Так и сделаю.
Anatoly Podgoretsky (2005-09-16 18:23:00) [5]Создавай новую таблицу и копируй туда нужные данные. Если копировать не требуется, то EmptyTable
Vlad2 (2005-09-16 17:00:00) [6]Anatoly Podgoretsky © (16.09.05 16:31) [17]
Может быть, и за пол-года. Задача оперативная, работает круглосуточно в режиме удаления/добавления. В зависимости от интенсивности срок может быть и больше полугода и меньше. Сама база относительно небольшая, периодически реструктуризируется (DbiDoRestructure), поэтому парадокс и держится. Конечно, мы сознаём, что это далеко не лучший вариант, но до другого пока руки не доходят. А 4 млрд нам тоже сначала казалось нереальным :-).
Кстати, доп. вопрос: можно ли убить поле в заполненной базе, а потом опять образовать (программно)?
Спасибо всем.
Anatoly Podgoretsky (2005-09-16 16:31:00) [7]Ты хочешь сказать что за 3 месяца в таблицу добавляется 4 миллиарда записей и столько же удаляется, не поверю. Не того маштаба Парадокс что бы подобное тянуть.
Vlad2 (2005-09-16 16:26:00) [8]Anatoly Podgoretsky © (16.09.05 16:03) [15]
Как я писал, - за несколько (3-4) месяцев. Но перенумерация нужна чаще и по другим (алгоритмическим) причинам в чужих программах, которые (эти причины) я устранить не могу. Спасибо.
Anatoly Podgoretsky (2005-09-16 16:03:00) [9]Достиг ли у тебя этот номер значения 40 000 000? Если достиг то за какое время, затем можешь умножить на 100
И конечно база раньше прекратит жить.
Val (2005-09-16 15:31:00) [10]это без вариантов.
Vlad2 (2005-09-16 14:44:00) [11]Anatoly Podgoretsky © (16.09.05 13:46) [11]
> Ты уже достиг хотя бы одного процента?
Процента чего?
К сожалению, при добавлении записей значение автономера только увеличивается, а не принимает отсутствующие (после удаления) номера.
Виталий Панасенко (16.09.05 14:23) [12]
> Если задача однопользовательская (для безопасности)
Этот номер используется и другими пользователями и другими задачами.
Использовать RecNo не могу, т.к. он изменится, если я сделаю другую выборку по базе.
Я благодарен всем откликнувшимся, и понимаю так, что нет способа, кроме перестроения базы, программно перенумеровать автономер.
Виталий Панасенко (2005-09-16 14:23:00) [12]Если задача однопользовательская (для безопасности), то
> Смысла в таком поле, ИМХО, немного. RecNo дублируешь?
используй вычисляемое поле, которому присваивай RecNo... Все будет в шоколаде...
Anatoly Podgoretsky (2005-09-16 13:46:00) [13]Vlad2 (16.09.05 11:23)
Ты уже достиг хотя бы одного процента?
Vlad2 (2005-09-16 13:29:00) [14]Это поле имеет вспомогательное значение - "окрашивает" записи для дальнейшего использования значений других полей в вычислительном комплексе (научная задача). Поэтому удобно, чтобы это делалось в автомате, чтобы я не заботился об уникальности его значения.
Периодически (раз в несколько месяцев) достигается предел значений, хотя база не очень большая (от нескольких тасяч до нескольких ( редко 2-3) сотен тыс. записей), но находится в интенсивном режиме модификаций (удаления и добавления). Просто хотелось снять эту проблему, чтобы значения автономера обновлялись сами при превышении какого-то порога.
Sergey13 (2005-09-16 12:39:00) [15]2[5] Vlad2 (16.09.05 11:59)
>Например, в базе 1000 записей, автономер - от 0 до 999.
И он достиг мыслимого предела.
>Первые 500 записей удалил, оставшиеся имеют номера с 500 до 999. Хочу, чтобы они имели номера с 0 по 499 (наверное, имею право :).
Смысла в таком поле, ИМХО, немного. RecNo дублируешь?
Val (2005-09-16 12:36:00) [16]а если удалял не первые 500, а через одну? или всего одну, 2, 3? что предполагается делать?
Виталий Панасенко (2005-09-16 12:19:00) [17]autoinc на то и autoinc, что сам по себе живет... Тогда используй Integer поле.. а то это как-то не логично получается... по определению поле так себя и должно вести (все время увеличиваться на 1).. а ты старешься его "заломать"...
Johnmen (2005-09-16 12:14:00) [18]>Хочу, чтобы они имели номера с 0 по 499 (наверное, имею право :).
Право имеешь. Вот только смысл этого действа ? Обоснуй.
Vlad2 (2005-09-16 11:59:00) [19]Спасибо за реакцию. Важное примечание: автономер - не в первичном ключе.
Например, в базе 1000 записей, автономер - от 0 до 999. Первые 500 записей удалил, оставшиеся имеют номера с 500 до 999. Хочу, чтобы они имели номера с 0 по 499 (наверное, имею право :).
Конечно, можно формально в Desktop'е удалить это поле и опять ввести, получится то, что мне надо. Но можно ли сделать это программно, в run-time, без перестройки (Create) базы?
Max Zyuzin (2005-09-16 11:51:00) [20]>Виталий Панасенко (16.09.05 11:31) [3]
Только в таком случае парадок рухнет думается раньше...