Vous ne pouvez pas résoudre ce problème avec votre conception actuelle sans interposer une logique au niveau du déclencheur ou de l'application. FOREIGN KEY
s ne peut pas faire référence à plus d'une table (je comprends que votre conception utilise une table par groupe de produits, si je me trompe, veuillez me le faire savoir). De plus, ils ne peuvent contenir aucune logique conditionnelle, donc même si vous avez un seul product_groups
table, vous ne pouvez pas créer une FOREIGN KEY
qui n'autorise que les enregistrements G1 et G2 de cette table.
Afin d'accomplir cela avec des contraintes d'intégrité relationnelle standard, vous auriez besoin d'une table supplémentaire appelée quelque chose comme approvable_products
qui contiendrait les product_ids
de ces produits qui sont dans le groupe un ou le groupe deux.