Форум: "Базы";
Текущий архив: 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.038 c