我无法弄清楚如何创建外键约束.我的数据模型是固定的,不受我的控制,它看起来像这样:
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)
Run Code Online (Sandbox Code Playgroud)
每个查询只有一个联系人.两者之间的联系是UniversalJoin表所在
Enquiry.Join_Ref = UniversalJoin.Join_Ref AND
Rel_Type = 1 AND
UniversalJoin.Contact_Ref = Contact.Contact_Ref
Run Code Online (Sandbox Code Playgroud)
Rel_Type根据源表的不同而不同,因此在Inquiry的情况下,Rel_Type为1,但对于另一个表,它将设置为N.
我的问题是如何创建外键约束来强制实现这种关系的完整性?我想说的,但不能,是:
CREATE TABLE Enquiry
...
CONSTRAINT FK_Foo
FOREIGN KEY (Join_Ref)
REFERENCES UniversalJoin (JoinRef WHERE Rel_Type=1)
Run Code Online (Sandbox Code Playgroud)
不能在 SQL Server 中使用条件外键或过滤外键
在这些情况下,您可以在 (JoinRef, Rel_Type) 之间设置多列 FK,并在 UniversalJoin 中对 Rel_Type 设置检查约束以使其为 1。
然而,我认为你试图与多个父母发生争吵,这是不可能的。
| 归档时间: |
|
| 查看次数: |
5200 次 |
| 最近记录: |