As restrições CHECK com UDFs (que é a resposta de Oded) não são bem dimensionadas e têm baixa simultaneidade. Veja estes:
- UDFs escalares encapsulados em restrições CHECK são muito lentos e podem falhar para atualizações de várias linhas
- Tony Rogerson
Então:
- crie uma nova tabela, digamos TableA2XY
- tem o PK de TableA e uma coluna char(1) com um CHECK para permitir apenas X ou Y. E uma restrição exclusiva no PK de A também.
- tableX e tableY têm uma nova coluna char(1) com uma verificação para permitir apenas X ou Y respectivamente
- tableX e tableY têm seus FK para TableA2XY em ambas as colunas
Esta é a abordagem de superchave ou subtipo
- todos baseados em DRI
- nenhum acionador
- sem udfs com acesso à tabela nas restrições CHECK.