Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.19;
Скачать: CL | DM;

Вниз

Уникальное значение поля для таблицы detail   Найти похожие ветки 

 
Vick   (2003-04-25 17:24) [0]

Доброго всем дня!

Может кто подскажет, возникла такая проблема: есть две таблицы - одна master, другая detail. В детальной таблице есть поле "Код товара", как обеспечить уникальность значения этого поля для каждой записи из таблицы-местера. Например, каждый документ должен содержать коды товаров, при это в этом док-те они не должны повторяться.

Заранее спасибо за ответ


 
MOA   (2003-04-25 18:01) [1]

Объявите уникальный (составной) индекс по полям код-документа, код-товара и скажите, что уникальность - это ограничение.
Удачи!


 
MOA   (2003-04-25 18:06) [2]

Вдогонку - наверное, эти поля - хороший кандидат в PRIMARY KEY в детайл-таблице.


 
Vick   (2003-04-25 18:18) [3]

Не могу я сделать его PRIMARY KEY, т.к. на самом деле для всей таблицы это поле не уникально.
Ерунда заключается в том, что данные детальной таблицы из ADO перегоняются в ClientDataSet (из определенных соображений) и нужно локально проверять на уникальность уже в нем и если есть уже такой код товара, то не делать Post или как-то еще.


 
MOA   (2003-04-25 18:34) [4]

>нужно локально проверять на уникальность уже в нем
А в самой-то базе, могут быть более 1 товара по 1 документу? Цитата из Вас:
>"Код товара", как обеспечить уникальность значения этого поля для каждой записи из таблицы-мастера
А если
>на самом деле для всей таблицы
я правидьно Вас понял? У Вас может быть 2 записи о товаре по 1 документу?
Удачи!


 
Vick   (2003-04-25 18:37) [5]

В одном документе может быть много товаров, но код товара не должен повторяться.


 
MOA   (2003-04-25 18:46) [6]

>В одном документе может быть много товаров, но код товара не должен повторяться.
я это и имел ввиду. О чём и речь. Чёткое ограничение уникальности - комбинация "код-документа"+"код-товара" - уникальна. Т.е. то, о чём уже говорилось. Уникальный индекс по этим полЯМ (двум, одновременно, НЕ два отдельных) + ОГРАНИЧЕНИЕ (constraint)по этому уникальному индексу (ещё раз - по 2-м полям сразу), и, действительно, этот индекс - кандидат в первичный ключ (составной ключ, 2 поля).
М.б., я что-то не понял. Поясните, плз.
Удачи!


 
Vick   (2003-04-25 18:49) [7]

Это все ясно, и было бы отлично, в случае, если я работаю с АДО, но я это все пересылаю потом в CDS и до того как я вызову ApplyUpdate я не смогу узнать, что я ввела повторяющийся код


 
Serginio   (2003-04-25 18:51) [8]

Согласен с MOA. А чем не нравится TList или TStringList, или другие отсортированные списки, при записи заносишь значения а после ввода проверяешь есть ли такое значение в списке???


 
Vick   (2003-04-25 18:53) [9]

Так и делаю, только возник вопрос на какое событие вешать эту операцию и какую операцию делать, если есть уже такое значение.


 
MOA   (2003-04-25 18:55) [10]

IMHO, тогда только верхними лапками. Т.е. в клиентском приложениии придётся писать код проверки. Но всё равно, на сервере указанное ограничение объявить нужно - целостность базы не должна нарушаться - но это уже не о том.
Удачи!



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

Текущий архив: 2003.05.19;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.007 c
1-59774
Tatiana
2003-05-05 18:13
2003.05.19
Illegal type in Write/Writeln statement


4-60004
AlexWM
2003-03-16 17:29
2003.05.19
Чтение заголовка окна


6-59828
Shadow
2003-03-22 17:42
2003.05.19
WebBrowser


14-59939
asusfi
2003-04-30 14:47
2003.05.19
Акт выполненых работ


6-59841
Duke DEE
2003-03-17 16:54
2003.05.19
Как забрать ответ сервера, если у него неопределён размер???





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