只允许设置两列中的一列

时间:2014-08-05 12:26:09

标签: sql-server database-design sql-server-2008-r2

我在SQL表中寻找一个约束,它只允许每行设置两个可空列中的一个。两列都是与不同表相关的外键。

例如,假设每个表格行都描述了一段旅程。我有一个单独的表格CarsPlanes

如果不重新设计我的整个数据库以使用Vehicles表,我如何确保每个旅程行都由 完成 a CarID还是一个PlaneID,但从不同时进行,而且从来都没有?

1 个答案:

答案 0 :(得分:2)

添加类似这样的约束......

ALTER TABLE TableName
ADD CONSTRAINT ck_Nullable CHECK (
                                    (CarID IS NULL AND PlaneID IS NOT NULL)
                                   OR 
                                    (CarID IS NOT NULL AND PlaneID IS NULL)
                                 )