SQL Server 2008:在此上下文中不允许子查询。只允许标量表达式

时间:2011-08-16 14:02:16

标签: sql sql-server-2008

我想使用SQL Server 2008创建一个数据库。我有我的SQL查询来创建它。 但每次我想执行它,我收到此错误消息: “在此上下文中不允许使用子查询。只允许使用标量表达式。”

这是问题所在的查询部分:

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

“检查”有问题,但我不知道是什么。 你能救我吗?

1 个答案:

答案 0 :(得分:4)

只允许检查约束对行中列的值进行断言。不允许引用同一个表中的其他行,更不用说其他表了。

有一些可能的解决方法 - 正如我在评论中所说,看起来你正试图创建一个外键约束。有一些软块可能也有效(通过在用户定义的函数中放置逻辑),但这些通常有边缘情况,在初始插入/更新期间检查将起作用,但可以在以后违反。

我们需要更清楚地了解您的问题,以提出可行的解决方案。你想要实现什么?如果是外键约束,那么外键约束的哪些功能在您的情况下不起作用?