sql >> Base de Datos >  >> RDS >> Sqlserver

Una restricción que solo permite que una de dos tablas haga referencia a una tabla base

Las restricciones de VERIFICACIÓN con UDF (que es la respuesta de Oded) no se escalan bien y tienen poca concurrencia. Mira estos:

  • Las UDF escalares envueltas en restricciones CHECK son muy lentas y pueden fallar en las actualizaciones de varias filas
  • Tony Rogerson

Entonces:

  • crear una nueva tabla, digamos TableA2XY
  • esto tiene el PK de TableA y una columna char(1) con un CHECK para permitir solo X o Y. Y también una restricción única en el PK de A.
  • tableX y tableY tienen una nueva columna char(1) con una marca para permitir solo X o Y respectivamente
  • tableX y tableY tienen su FK a TableA2XY en ambas columnas

Este es el enfoque de superclave o subtipo

  • todo basado en DRI
  • sin disparadores
  • sin udfs con acceso a tablas en restricciones CHECK.