我在创建外键约束时遇到了困难。我的数据模型已经固定,不受我的控制,看起来像这样:
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的取值取决于源表,所以在Enquiry表中,Rel_Type为1,而对于另一个表,则可能设置为N。
我的问题是如何创建外键约束来保证这种关系的完整性?我想说的是:
CREATE TABLE Enquiry
...
CONSTRAINT FK_Foo
FOREIGN KEY (Join_Ref)
REFERENCES UniversalJoin (JoinRef WHERE Rel_Type=1)