我有一个有两列的表(除其他外):
NotApplicable bit
TargetLevel numeric(5,2)
我需要创建一个约束,以应用以下规则:
- NotApplicable 和 TargetLevel 不能同时为 NULL
- NotApplicable 和 TargetLevel 不能同时具有值
- NotApplicable 或 TargetLevel 必须有一个值
我想这是一个排他性的 OR 场景?前一阵子我试了一下,但现在我意识到这并不能解释上面的最后一种情况:
ALTER TABLE [dbo].[my_Table] ADD CONSTRAINT [DF_tbl_my_Table_notApplicable] DEFAULT ((0)) FOR [notApplicable]
GO
ALTER TABLE [dbo].[my_Table] WITH CHECK ADD CONSTRAINT [CK_tbl_my_Table] CHECK ((COALESCE([targetLevel],[notapplicable]) IS NOT NULL))
GO
ALTER TABLE [dbo].[my_Table] CHECK CONSTRAINT [CK_tbl_my_Table]
GO
任何完善这一点的帮助将不胜感激。另外,上面的示例中是否真的需要最后一个 ALTER 语句?