具有多个键的外键约束

时间:2016-02-11 15:26:52

标签: sql-server entity-framework

我已经敲了一个简单的桌子设计:

enter image description here

你可以看到, tAttachments 图片 PlayerNames PlayerNumbers 的外键。以下是对表格的详细介绍:

enter image description here

我需要在表上创建一个约束,指出 tAttachments 必须至少有1个外键集。 有谁知道我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

我不知道如何在数据库设计步骤中执行此操作,但您可以执行触发器 INSERT和触发器更新。通过这种方式,您可以检查是否遵守此约束。

类似的东西:

create trigger tAttachmentsCheck on tAttachments for insert, update as
begin
if exists (select *
    from inserted i
    where (i.ImageId <> NULL and PlayerNameId <> NULL)
    or (i.ImageId <> NULL and PlayerNameId <> NULL and PlayerNumberId <> NULL)
    or (i.ImageId <> NULL and PlayerNumberId <> NULL)
    or (i.PlayerNumberId <> NULL and PlayerNameId <> NULL))

    rollback transaction
end

答案 1 :(得分:0)

简单的检查约束:

ImageID is NULL and PlayerNameID is NULL and PlayerNumberID is NOT NULL
or ImageID is NULL and PlayerNameID is NOT NULL and PlayerNumberID is NULL
or ImageID is NOT NULL and PlayerNameID is NULL and PlayerNumberID is NULL