Форум: "Базы";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];
ВнизЧисло Найти похожие ветки
← →
Ag2002 (2002-07-19 18:15) [0]Подскажите, есть поле в БД числовое, оно пользователю для ввода не доступно, но мне нужно чтобы в это поле вводились, произвольные значения, которые НЕМОГУТ повторятся, т.к. будут активно использоватся, в другой таблице, как это сделать, подойдет ли random ?
← →
Val (2002-07-19 18:33) [1]>подойдет ли random ?
конечно нет, поскольку это генератор псевдослучайных чисел и вполне нормальна ситуация когда он выдаст несколько повторяющихся значений.
Для этих целей можно использовать (при работе с бд только одного пользователя) квери с запросом select max(id)+1 from mytable, возвращаемое им значение и вставлять в новую запись.
Можно также сделать у этого поля тип автоинкремент, но проблема в том что он нестабилен в парадоксе.
← →
Ag2002 (2002-07-19 18:42) [2]Автоинкримент былбы хорош если бы записи не удалялись, добавлять номер количества записей + 1, не подходит, из-за проблем удаления !!!
Нужен какой нибудь код, по генерации произвольно большого числа, но который очень быстро выполняется !!!
← →
sniknik (2002-07-19 18:48) [3]CreateGUID ? уникальность гарантируется.
← →
Val (2002-07-19 18:55) [4]я предлагал вам не добавлять номер количества записей + 1, а максимальный ID+1 - разницу чувствуете??? или это конец рабочего дня так действует? ;)
← →
kaif (2002-07-20 01:11) [5]Можно собрать из текущей дата-времени нечто... типа
StrToInt64(FormatDateTime("YYMMDDHHNNSS",Now)), если Paradox умеет с int64 работать...
← →
Ag2002 (2002-07-22 10:11) [6]Я тут свою идею всётаки реализовал, перед добавлением записи, смещатся к последней читать значение в этом поле и прибовлять 1, ни каких повторений :)))
← →
Johnmen (2002-07-22 10:26) [7]>Ag2002 (22.07.02 10:11)
Ха. А это и есть вариант Val ©, только через задницу.
← →
Ag2002 (2002-07-22 15:29) [8]ЗАто работает,
Везде есть свои недостатки,
А в нашей стране всё так делается, через ... !!!
← →
MsGuns (2002-07-22 15:45) [9]>Ag2002
А если запись вставиться в середину табла ?
← →
Val (2002-07-22 15:58) [10]>Ag2002 (22.07.02 15:29)
аргументы потрясающие
← →
Ag2002 (2002-07-22 17:40) [11]> MsGuns ©
Проверь всё пашет, ведь берётся значение поля которое стоит последним, а там всегда самое большое значение !!!
← →
MsGuns (2002-07-22 18:18) [12]>Ag2002
OfCouse !
4 записи (только ключи)
10
20 <-- Здеся юзверь нажает Insert
30
40
Прога определяет значение 50, ессно. Но тогда новая запись будет ПОСЛЕДНЕЙ ! А ему надо, чтоб она была после 10, но до 20 !
Вот, собственно, и все !!!
← →
Val (2002-07-22 18:30) [13]>MsGuns © (22.07.02 18:18)
думаю вы немного не о том говорите, поскольку автору нужен уникальный ID(pk) вот и все, а как он отобразит эти записи для пользователя, он решает с помощью построения индексов, конечно же, но почему вы думаете, что обязательно по ID? pk обычно даже не отображают, его осн. применение - обеспечение уникальности записи в НД. А физически запись добавляется в конец НД.
← →
MsGuns (2002-07-22 18:41) [14]> Val
>думаю вы немного не о том говорите, поскольку автору нужен >уникальный ID(pk) вот и все, а как он отобразит эти записи для >пользователя, он решает с помощью построения индексов,
Если вопрос ставится именно так, то, безусловно, вы все правы !
Но, к сожалению, это не всегда приемлимо для юзера (например, бухгалтера хотят видеть проводки в том порядке, в каком они их ВВОДИЛИ !)
← →
Val (2002-07-22 18:48) [15]дело в том что ID(pk) не должен касаться юзера, он о нем и не знает вовсе. Это информация для разработчика. А для бухгалтеров существуют номера документов(часто уникальный индекс), даты ввода и т.д., с которыми они и работают.
← →
MsGuns (2002-07-22 18:54) [16]>Val
Не хочу казаться скучным, но НОМЕР ПРОВОДКИ и НОМЕР ДОКУМЕНТА это совсем не одно и то же. Есть проводки БЕЗ документов, а есть документы с кучей проводок. А номер, действительно, показывать не надо - и вот из-за этого-то вся проблема ! (Если б он вводился/ редактировался юзером, никаких траблов бы не было !) Лови себе выталкивание ключей и верещи мессагой !
← →
Val (2002-07-22 18:59) [17]я не утверждал о том что это одно и тоже, я говорил о служебной информации в контексте структуры базы данных и информации для пользователя.
← →
Anatoly Podgoretsky (2002-07-22 19:27) [18]Ag2002 (19.07.02 18:42)
А чем прерятствует удаления уникальности автоинкриментного поля, откуда такое дикое предположение
← →
Anatoly Podgoretsky (2002-07-22 19:29) [19]Random конечно тоже можно использовать, проверяя уникальность в цикле, но вот тут уже в полной мере становится проблема удаления
← →
CA (2002-07-22 23:02) [20]> Anatoly Podgoretsky
если удалять запись и добовлять просто новую то значение ключа повторяеется
← →
Anatoly Podgoretsky (2002-07-22 23:24) [21]CA (22.07.02 23:02)
Ты это сам решил ил на основании каких нибудь научных данных?
← →
Ag2002 (2002-07-23 14:02) [22]Anatoly Podgoretsky
Са наверно имел в виду если в запись вставлять значение количества записей в БД
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.006 c