Форум: "Базы";
Текущий архив: 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