외래 키 제약 조건을 만드는 방법을 파악하는 데 문제가 있습니다. 내 데이터 모델은 고정되어 있으며 제어 할 수 없으므로 다음과 같이 보입니다.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)
각 문의에는 정확히 하나의 연락처가 있습니다. 둘 사이의 링크 Rel_Type은 1,
Enquiry.Join_Ref = UniversalJoin.Join_Ref AND
Rel_Type = 1 AND
UniversalJoin.Contact_Ref = Contact.Contact_Ref
Rel_Type가 귀하의 경우에, 그래서, 소스 테이블이 무엇인지에 따라 달라지는 UniversalJoin 테이블이지만 다른 테이블 것이 N.
설정된 것내 질문은이 관계의 무결성을 적용하기 위해 외래 키 제약 조건을 어떻게 만듭니 까? 내가하고 싶은 말은하지만, 할 수없는 것은,이다 :
CREATE TABLE Enquiry
...
CONSTRAINT FK_Foo
FOREIGN KEY (Join_Ref)
REFERENCES UniversalJoin (JoinRef WHERE Rel_Type=1)
이상한 데이터 모델입니다 ... – Paddy