小编典典

检查约束-在这种情况下不允许子查询

sql

我试图添加一个 检查约束 ,但到目前为止,我只是失败了。解决这个问题的方法是什么:

讯息1046,第15级,州1,第6行

在这种情况下,不允许子查询。仅允许标量表达式。

这是代码:

ALTER TABLE dbo.PropertySeasonDiscount ADD CONSTRAINT
[CC_PropertySeasonDiscount_MadeFrom_MadeTo]
CHECK (
    (SELECT COUNT(PropertySeasonDiscountId) FROM dbo.PropertySeasonDiscounts apsdeb 
        WHERE 
            (apsdeb.PropertySeasonId = PropertySeasonId) AND
            (
                (apsdeb.ValidForReservationsMadeTo >= ValidForReservationsMadeFrom AND ValidForReservationsMadeFrom >= apsdeb.ValidForReservationsMadeFrom) OR
                (apsdeb.ValidForReservationsMadeFrom <= ValidForReservationsMadeTo AND ValidForReservationsMadeTo <= apsdeb.ValidForReservationsMadeTo)
            )
    ) = 0
);

阅读 175

收藏
2021-03-23

共1个答案

小编典典

SQL Server当前不支持CHECK
CONSTRAINT的子查询

您已经发现,尝试规避子查询限制时,涉及UDF的CHECK约束可能会出现问题

替代性约束执行策略是 触发过程嵌入式过程 。前者是首选,因为与声明性约束相同,它们不能被规避。

2021-03-23