I vincoli CHECK con le UDF (che è la risposta di Oded) non si adattano bene e hanno una scarsa concorrenza. Vedi questi:
- Le UDF scalari racchiuse nei vincoli CHECK sono molto lente e potrebbero non riuscire per gli aggiornamenti su più righe
- Tony Rogerson
Quindi:
- crea una nuova tabella, ad esempio TableA2XY
- questo ha la PK di TableA e una colonna char(1) con un CHECK per consentire solo X o Y. E anche un vincolo univoco sulla PK di A.
- tableX e tableY hanno una nuova colonna char(1) con un segno di spunta per consentire solo X o Y rispettivamente
- tableX e tableY hanno il loro FK su TableA2XY su entrambe le colonne
Questo è l'approccio della superchiave o del sottotipo
- tutti basati su DRI
- nessun trigger
- nessun udf con accesso alla tabella nei vincoli CHECK.