gpt4 book ai didi

sql-server - SQL Server 条件外键约束

转载 作者:行者123 更新时间:2023-12-02 23:29:40 36 4
gpt4 key购买 nike

我无法弄清楚如何创建外键约束。我的数据模型是固定的并且不受我的控制,它看起来像这样:

CREATE TABLE Enquiry 
(Enquiry_Ref INTEGER PRIMARY KEY CLUSTERED, Join_Ref INTEGER, EnquiryDate, EnquiryType...)

CREATE TABLE Contact
(Contact_Ref INTEGER PRIMARY KEY CLUSTERED, Surname, Forenames ....)

CREATE TABLE UniversalJoin
(Join_Ref INTEGER, Contact_Ref INTEGER, Rel_Type INTEGER)

每个查询只有一个联系人。两者之间的链接是 UniversalJoin 表,其中

Enquiry.Join_Ref = UniversalJoin.Join_Ref AND 
Rel_Type = 1 AND
UniversalJoin.Contact_Ref = Contact.Contact_Ref

Rel_Type 根据源表的不同而不同,因此在查询的情况下,Rel_Type 为 1,但对于另一个表,它将设置为 N。

我的问题是如何创建外键约束来强制这种关系的完整性?我想说却不能说的是:

CREATE TABLE Enquiry 
...
CONSTRAINT FK_Foo
FOREIGN KEY (Join_Ref)
REFERENCES UniversalJoin (JoinRef WHERE Rel_Type=1)

最佳答案

不能在 SQL Server 中使用条件外键或过滤外键

在这些情况下,您可以在 (JoinRef, Rel_Type) 之间设置多列 FK,并在 UniversalJoin 中对 Rel_Type 设置检查约束以使其为 1。

但是,我认为您试图与多个 parent 发生争吵,这是不可能的。

关于sql-server - SQL Server 条件外键约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2409033/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com