Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.005 c
1-35316
anod
2002-07-29 19:08
2002.08.12
Дети у TTreeView


14-35422
SPeller
2002-07-16 22:59
2002.08.12
Вот и досиделси ....


1-35381
idr
2002-07-30 14:15
2002.08.12
Printer.Canvas.CopyRect


1-35317
SemFLY
2002-07-24 01:17
2002.08.12
Заполнение текстового документа из программы...


1-35307
Alibaba
2002-07-29 17:21
2002.08.12
StringGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский