我试图添加一个 检查约束 ,但到目前为止,我只是失败了。解决这个问题的方法是什么:
讯息1046,第15级,州1,第6行 在这种情况下,不允许子查询。仅允许标量表达式。
讯息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 );
SQL Server当前不支持CHECK CONSTRAINT的子查询。
您已经发现,尝试规避子查询限制时,涉及UDF的CHECK约束可能会出现问题。
替代性约束执行策略是 触发过程 和 嵌入式过程 。前者是首选,因为与声明性约束相同,它们不能被规避。