CHECK-Einschränkungen mit UDFs (was die Antwort von Oded ist) lassen sich nicht gut skalieren und haben eine schlechte Parallelität. Siehe diese:
- Skalare UDFs, die in CHECK-Einschränkungen eingeschlossen sind, sind sehr langsam und können bei mehrzeiligen Aktualisierungen fehlschlagen
- Tony Rogerson
Also:
- erstelle eine neue Tabelle, sagen wir TableA2XY
- Dies hat den PK von TableA und eine char(1)-Spalte mit einem CHECK, um nur X oder Y zuzulassen. Und auch eine eindeutige Einschränkung für den PK von A.
- tableX und tableY haben eine neue char(1)-Spalte mit einem Häkchen, um nur X bzw. Y zuzulassen
- tableX und tableY haben ihre FK zu TableA2XY in beiden Spalten
Dies ist der Superkey- oder Subtype-Ansatz
- alle DRI-basiert
- keine Auslöser
- keine UDFs mit Tabellenzugriff in CHECK-Einschränkungen.