我無法弄清楚如何創建外鍵約束。我的數據模型是固定的,超出了我的控制範圍,看起來像這樣:SQL Server有條件的外鍵約束
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)
每個查詢只有一個聯繫人。這兩者之間的聯繫是其中
Enquiry.Join_Ref = UniversalJoin.Join_Ref AND
Rel_Type = 1 AND
UniversalJoin.Contact_Ref = Contact.Contact_Ref
的Rel_Type不同,取決於源表是什麼,所以在調查的情況下,UniversalJoin表,Rel_Type是1,但另一個表,將設置爲N.
我的問題是如何創建一個外鍵約束來強制這種關係的完整性?我想要說什麼,但不能是:
CREATE TABLE Enquiry
...
CONSTRAINT FK_Foo
FOREIGN KEY (Join_Ref)
REFERENCES UniversalJoin (JoinRef WHERE Rel_Type=1)
這是一個奇怪的datamodel ... – Paddy 2010-03-09 12:47:06