对于措辞严厉的标题道歉,但我无法准确表达我的意思,这可能就是为什么我找不到与Google有关的任何内容。
简单地说,想象一下这样一种情况,即在一个包含图片和相关元数据的数据库中有一个名为Image的表。照片可以是客户,他们的汽车或在汽车上进行的特定修理。有一些名为Client,Car和Repair的表,每个表都有自己唯一的ID列。
在Image表中,有一个名为ClientID的列,一个名为CarID的列和一个名为RepairID的列,它将每个图像记录链接到客户端,汽车和/或修复。问题是,图像可能与客户和汽车有关,但不是维修,汽车和维修,但不是客户,或只是这三者中的任何一个。换句话说,在一列,两列或三列中可能有一个值,但必须至少有一列。只要一个不是NULL,其他两个就可以。
有没有办法在MSSQL中使用约束(或任何其他方法)来实现这一点?
希望下面的示例图表能说明我在说什么。
答案 0 :(得分:2)
在Image
表上创建一个如下所示的约束:
Car is not null or Client is not null or Repair is not null
DDL:
ALTER TABLE [dbo].[Image] WITH CHECK ADD CONSTRAINT [CK_Image_CarClientRepair] CHECK (Car is not null or Client is not null or Repair is not null)