Je n'arrive pas à déterminer comment créer une contrainte de clé étrangère. Mon modèle de données est fixe et hors de mon contrôle, il ressemble à ceci:Contraintes de clé étrangère conditionnelles 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)
Chaque enquête sur a exactement un contact. Le lien entre les deux est la table UniversalJoin où
Enquiry.Join_Ref = UniversalJoin.Join_Ref AND
Rel_Type = 1 AND
UniversalJoin.Contact_Ref = Contact.Contact_Ref
Le Rel_Type varie en fonction de ce que la table source est, donc dans le cas d'enquête, Rel_Type est 1, mais pour une autre table, il fixerait à N.
Ma question est comment puis-je créer une contrainte de clé étrangère pour renforcer l'intégrité de cette relation? Ce que je veux dire, mais ne peut pas, est:
CREATE TABLE Enquiry
...
CONSTRAINT FK_Foo
FOREIGN KEY (Join_Ref)
REFERENCES UniversalJoin (JoinRef WHERE Rel_Type=1)
C'est un odd datamodel ... – Paddy