SQL Server 2008: подзапросы не разрешены в этом контексте. Разрешены только скалярные выражения - PullRequest
1 голос
/ 16 августа 2011

Я хочу создать базу данных с использованием SQL Server 2008. У меня есть SQL-запрос для ее создания.Но каждый раз, когда я хочу выполнить его, я получаю это сообщение об ошибке: «Подзапросы недопустимы в этом контексте. Разрешены только скалярные выражения».

Это часть запроса, в которой проблема:

alter table PRODUIT add constraint ID_PRODUIT_CHK
     check(exists(select * from PRODUCTION
                  where PRODUCTION.IdProduit = IdProduit)); 

Что-то не так с "чеком", но я не знаю что.Вы можете мне помочь?

1 Ответ

4 голосов
/ 16 августа 2011

Проверочное ограничение допускается только для утверждений о значениях столбцов в строке.Нельзя ссылаться на другие строки в той же таблице, не говоря уже о других таблицах.

Есть некоторые возможные обходные пути - как я уже сказал в своем комментарии, похоже, что вы пытаетесь создать ограничение внешнего ключа.Есть некоторые помадки, которые также могут работать (путем помещения логики в определяемую пользователем функцию), но обычно они имеют крайние случаи, когда проверка будет работать во время первоначальной вставки / обновления, но может быть нарушена позже.

МыВам нужно более четко понять вашу проблему, чтобы предложить работоспособное решение.Чего ты пытаешься достичь.Если это , а не ограничение внешнего ключа, какие функции ограничений внешнего ключа не работают в вашей ситуации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...