En SQL, ¿hay alguna forma de exigir que solo una columna de un grupo de columnas tenga un valor y las demás sean nulas? ¿Tal vez una restricción o un disparador? Este tipo de cosas podría ser para una tabla de búsqueda, pero ¿hay algún diseño de tabla alternativo que pueda lograr esto mejor?SQL: cómo hacer cumplir que solo se establece una sola columna en un grupo de columnas
Por ejemplo:
ID OtherTable1ID OtherTable2ID OtherTable3ID
-----------------------------------------------------
1 23 NULL NULL
2 NULL 45 NULL
3 33 55 NULL -- NOT ALLOWED
El principal problema es que estas columnas son todas las claves ajenas a otras tablas, por lo que no puede caer hacia abajo a una sola columna.
Estoy usando SQL Server, pero cualquier respuesta servirá.
Gracias por la actualización, pero es posible que desee dar más detalles sobre el diseño de la base de datos. Por ejemplo, esta es una situación de subtipado, donde esta tabla puede ser un subtipo de una y solo una de las otras tablas. Además, ¿está permitido que todas las columnas "Otras" sean nulas? –
Parece una tabla de búsqueda. ¿Básicamente significa que si agregas un FK más, le agregas una columna más? –
Sí, básicamente es una tabla de búsqueda para mí. Si necesito agregar otro parámetro de búsqueda, tendría que agregar otra columna de FK. ¿Hay mejores formas de lograr esto? –