Les contraintes CHECK avec UDF (qui est la réponse d'Oded) ne s'adaptent pas bien et ont une faible simultanéité. Voir ceux-ci :
- Les UDF scalaires enveloppées dans des contraintes CHECK sont très lentes et peuvent échouer pour les mises à jour multilignes
- Tony Rogerson
Donc :
- créez une nouvelle table, dites TableA2XY
- ceci a le PK de TableA et une colonne char(1) avec un CHECK pour autoriser uniquement X ou Y. Et une contrainte unique sur le PK de A aussi.
- tableX et tableY ont une nouvelle colonne char(1) avec une coche pour n'autoriser que X ou Y respectivement
- tableX et tableY ont leur FK à TableA2XY sur les deux colonnes
C'est l'approche de la super clé ou du sous-type
- tous basés sur DRI
- aucun déclencheur
- pas d'udfs avec accès à la table dans les contraintes CHECK.