Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Уникальное значение поля для таблицы detail [D5, MSSQL]


Vick ©   (2003-04-25 17:24:00) 

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

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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


Vick   (2003-04-25 18:18:00) [8]

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


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

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо