Comment faire référence à d'autres tables dans la vérification des contraintes?

J'ai une table, ProductSupportArticles:

ProductSupportArticleID int NOT NULL <primary key>
ParentArticleID int NULL
ProductID int NOT NULL
Title varchar(100) NOT NULL
Content varchar(MAX) NOT NULL

ProductID est une clé étrangère de Produits.ID, ParentArticleID est une clé étrangère à la même table, ProductSupportArticles.ProductSupportArticleID. J'ai une contrainte de vérification ProductSupportArticleID != ParentArticleID de sorte qu'un article ne peut pas être son propre parent.

Cependant, un article de l'assistance se rapportant à un produit en particulier ne devraient pas être en mesure d'être le parent ou l'enfant d'un article relatif à un produit différent. Comment puis-je ajouter une contrainte de vérification ou similaire en disant: (ProductID = (SELECT ProductID FROM ProductSupportArticles P WHERE ParentArticleID = P.ProductSupportArticleID))

Ou comment dois-je mettre en œuvre mes tables différemment?

Utiliser un déclencheur ou un UDF. Vérifier les contraintes ne peuvent pas quitter l'enregistrement en cours, mais par l'UDF, vous pouvez accéder à d'autres dossiers/tables.

OriginalL'auteur Jake Petroules | 2011-03-20