Главная страница
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.49 MB
Время: 0.013 c
3-59549
Иван
2003-04-25 16:24
2003.05.19
Как работать с DBF и Paradox, используя ADO-компоненты?


7-59957
Bartov
2003-03-20 05:55
2003.05.19
Метки дисков


1-59674
Andrushka
2003-05-07 15:31
2003.05.19
Как сжать шрифт по горизонтали? (типа condensed при печати из DOS


4-60003
Step[B.M.]
2003-03-01 12:42
2003.05.19
Как из моей проги запустить другой exe-шник, да еще с параметрами


3-59589
Dimedrol
2003-04-24 14:27
2003.05.19
Yaffil Personal