我在SQL表中寻找一个约束,它只允许每行设置两个可空列中的一个。两列都是与不同表相关的外键。
例如,假设每个表格行都描述了一段旅程。我有一个单独的表格Cars
和Planes
。
如果不重新设计我的整个数据库以使用Vehicles
表,我如何确保每个旅程行都由 完成 a CarID
还是一个PlaneID
,但从不同时进行,而且从来都没有?
答案 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)
)