【发布时间】:2010-03-09 12:41:29
【问题描述】:
我无法弄清楚如何创建外键约束。我的数据模型是固定的并且不受我的控制,它看起来像这样:
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 ddl