Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

Constraint и Exists   Найти похожие ветки 

 
Fishka   (2004-03-25 14:52) [0]

Мне нужно добавить ограничение на столбец таблицы (recept.id_oprod), значения в котором могут быть такими же, как в другой таблице (or_prod.id_oprod), для которых есть еще дополнительное условие (or_prod.sign_oprod=1). Пишу что-то вроде этого:
ALTER TABLE recept
ADD CONSTRAINT CK_recept
exists (select id_oprod from or_prod
where recept.id_oprod=or_prod.id_oprod
and or_prod.sign_oprod=1)

Выдается ошибка: Incorrect syntax near the keyword "exists"
Где моя ошибка?
Разве нельзя писать Constraint с условием  exists select..?


 
Ega23 ©   (2004-03-25 14:56) [1]

Вообще-то первое, что приходит в голову - почему бы foreign key не использовать? Но причём здесь тогда or_prod.sign_oprod=1?
Чисто из любопытства: а модель можно описать, если не секрет?


 
Fishka   (2004-03-25 14:59) [2]

В данном случае из-за дополнительного условия or_prod.sign_oprod=1 foreign key не подходит.
Что касается описания, то возможны не все коды продукции в данномй таблице, а только те, которые имеют значение or_prod.sign_oprod=1 .
Жду ответа


 
Ega23 ©   (2004-03-25 15:04) [3]

Что касается описания, то возможны не все коды продукции в данномй таблице, а только те, которые имеют значение or_prod.sign_oprod=1  .

Это как раз понятно. Просто может у тебя модель базы спроектирована неверно.

А вообще можно так: вторичный ключ + триггер на insert. А в триггере проверять, чему равно or_prod.sign_oprod


 
Johnmen ©   (2004-03-25 15:06) [4]

Ошибка в синтаксисе. Не указан тип констрейнта. В данном случае  CHECK.


 
Ega23 ©   (2004-03-25 15:10) [5]

Блин, точно. А я про CHECK как-то и забыл  :-((


 
Fishka   (2004-03-25 15:16) [6]

Модель базы спроектирована верно. Есть таблицы, у которых foreign key на таблицу or_prod. Но данная таблица имеет тоже как бы foreign key, но не на все значения, а только на те, у которых or_prod.sign_oprod=1.  

А вторичный ключ такого типа был уже мною когда-то написан, но  база была InterBase.
И со словом CHECK попытки были. Ошибка такая:
Subqueries are not supported in CHECK constraints

И все же надеюсь на помощь....


 
Johnmen ©   (2004-03-25 15:33) [7]

>Subqueries are not supported in CHECK constraints

Этим всё сказано.

Вот в IB/FB/YA это дело supported :)


 
Nikolay M. ©   (2004-03-25 15:37) [8]

Почему бы просто тригером не сделать?


 
Fishka   (2004-03-25 15:43) [9]

Johnmen ©   (25.03.04 15:33) [7]
У меня такая мысль была (что такое ограничение не поддерживается в MSSSQL). Но так хотелось верить, что я ошибаюсь, и MSSSQL круче, чем IB........... Увы........

Но может, все-таки можно обойтись Constraint-ом?


 
Johnmen ©   (2004-03-25 15:52) [10]

>Fishka   (25.03.04 15:43) [9]

Могу от себя сказать, что если вдруг появляется такая необходимость, то она решается через триггеры (Nikolay M. ©   (25.03.04 15:37) [8]). Что в большинстве случаев к тому же и работает гибче и быстрее...



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

Форум: "Базы";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.034 c
7-1077960096
DuhcmanSoft
2004-02-28 12:21
2004.04.25
StayOnTop для компонентов требуется помощь.


9-1067445956
X_Michael
2003-10-29 19:45
2004.04.25
Всплывающее окно удаленного соединения


1-1081331234
Mikki
2004-04-07 13:47
2004.04.25
Построчный вывод текста


1-1081343059
Ne_Vaszno
2004-04-07 17:04
2004.04.25
Взаимодействие нескольких TStringList


14-1080649747
Vovchik_A
2004-03-30 16:29
2004.04.25
Я плакалъ





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