Compartir a través de


Crear y modificar restricciones FOREIGN KEY

Cuando se crea una tabla, se puede crear una restricción FOREIGN KEY como parte de la definición de esa tabla. Si ya existe una tabla, puede agregar una restricción FOREIGN KEY, siempre que dicha restricción esté vinculada a una restricción PRIMARY KEY o UNIQUE existente en otra, o la misma, tabla. Una tabla puede contener varias restricciones FOREIGN KEY.

Si ya existe una restricción FOREIGN KEY, puede modificarla o eliminarla. Por ejemplo, es posible que desee que la restricción FOREIGN KEY de la tabla haga referencia a otras columnas. Sin embargo, no se puede cambiar la longitud de una columna definida con una restricción FOREIGN KEY.

Nota

Para modificar una restricción FOREIGN KEY, deberá eliminar la restricción FOREIGN KEY existente y, a continuación, volver a crearla con la nueva definición.

Elimine una restricción FOREIGN KEY para quitar el requisito de integridad referencial entre las columnas de clave externa y las columnas de la clave principal, o de restricción UNIQUE, relacionadas que se encuentran en otra tabla.

Para crear una restricción FOREIGN KEY durante la creación de una tabla

CREATE TABLE (Transact-SQL)

Para crear una restricción FOREIGN KEY en una tabla existente

ALTER TABLE (Transact-SQL)

Cómo crear relaciones entre tablas (Visual Database Tools)

Para eliminar una restricción FOREIGN KEY

ALTER TABLE (Transact-SQL)

Forzar una restricción FOREIGN KEY mediante WITH NOCHECK

Cuando se agrega una restricción FOREIGN KEY a una o varias columnas existentes en la tabla, de forma predeterminada, el Motor de base de datos examina los datos existentes en las columnas para garantizar que todos los valores, excepto los valores NULL, existan en las columnas de la restricción PRIMARY KEY o UNIQUE a la que se hace referencia. Sin embargo, especificando WITH NOCHECK, se puede impedir que el Motor de base de datos compruebe los datos de la columna con la nueva restricción y exigirle que agregue la nueva restricción, independientemente de los datos que haya en la columna. La opción WITH NOCHECK resulta útil cuando los datos existentes ya cumplen la nueva restricción FOREIGN KEY o cuando una regla de empresa requiere que se exija la restricción sólo a partir de ese punto.

No obstante, debe actuar con precaución cuando agregue una restricción sin comprobar los datos existentes, porque de este modo se omiten los controles del Motor de base de datos que exigen la integridad de los datos de la tabla.

Para impedir la comprobación de los datos existentes al crear una restricción FOREIGN KEY

ALTER TABLE (Transact-SQL)

Deshabilitar restricciones FOREIGN KEY

Se pueden deshabilitar las restricciones FOREIGN KEY existentes para operaciones específicas, como operaciones INSERT, operaciones UPDATE y los procesos de replicación.

  • Instrucciones INSERT y UPDATE

    Al deshabilitar una restricción FOREIGN KEY, se permite que los datos de la tabla se modifiquen sin que las restricciones los validen. Deshabilite una restricción FOREIGN KEY durante las instrucciones INSERT y UPDATE si los nuevos datos infringen la restricción o si la restricción sólo se aplica a los datos que ya se encuentran en la base de datos.

    Nota

    Las acciones de cascada definidas en una clave principal relacionada no se realizarán en las filas que contienen claves externas que están deshabilitadas.

  • Procesos de replicación

    Deshabilite una restricción FOREIGN KEY durante la replicación si la restricción es específica para la base de datos de origen. Cuando se replica una tabla, la definición de la tabla y los datos se copian desde la base de datos de origen en una base de datos de destino. Si las restricciones FOREIGN KEY son específicas de la base de datos de origen pero no están deshabilitadas durante la replicación, puede que impidan innecesariamente que se escriban nuevos datos en la base de datos de destino. Para obtener más información, vea Controlar restricciones, identidades y desencadenadores con NOT FOR REPLICATION.

Para deshabilitar una restricción FOREIGN KEY para las instrucciones INSERT y UPDATE

ALTER TABLE (Transact-SQL)

Cómo deshabilitar restricciones FOREIGN KEY con instrucciones INSERT y UPDATE (Visual Database Tools)

Para deshabilitar una restricción FOREIGN KEY para la replicación

ALTER TABLE (Transact-SQL)

Cómo deshabilitar restricciones FOREIGN KEY durante la replicación (Visual Database Tools)

Para obtener información acerca de las restricciones FOREIGN KEY

sys.foreign_keys (Transact-SQL)

Para obtener información acerca de las columnas que forman una restricción FOREIGN KEY

sys.foreign_key_columns (Transact-SQL)

Vea también

Conceptos