SQL Server

SQL Server SS Foreign Keys: Sintaxis para crear una clave externa

Sintaxis básica

La sintaxis básica para crear una clave externa en SQL Server es la siguiente:

«`sql
ALTER TABLE nombre_tabla
ADD CONSTRAINT nombre_constraint
FOREIGN KEY (columna)
REFERENCES tabla_referenciada (columna_referenciada);
«`

Donde:
– `nombre_tabla` es el nombre de la tabla en la que se creará la clave externa.
– `nombre_constraint` es el nombre que le daremos a la restricción de clave externa.
– `columna` es la columna en la tabla actual que será la clave externa.
– `tabla_referenciada` es la tabla a la que se hace referencia.
– `columna_referenciada` es la columna en la tabla referenciada que se utilizará como clave primaria.

Es importante destacar que tanto la columna de la tabla actual como la columna de la tabla referenciada deben tener el mismo tipo de datos.

Especificando la tabla y columna referenciada

En la sintaxis básica, se especifica la tabla y columna referenciada utilizando las cláusulas `REFERENCES` y `(columna_referenciada)`. Esto indica a SQL Server qué tabla y columna se utilizarán como clave primaria para la clave externa.

Por ejemplo, si tenemos una tabla llamada `Pedidos` con una columna `ClienteID` que se refiere a la tabla `Clientes` y su columna `ID`, la sintaxis sería la siguiente:

«`sql
ALTER TABLE Pedidos
ADD CONSTRAINT FK_Pedidos_Clientes
FOREIGN KEY (ClienteID)
REFERENCES Clientes (ID);
«`

Definiendo acciones en cascada

En algunos casos, es posible que deseemos definir acciones en cascada para la clave externa. Esto significa que cuando se realice una acción en la tabla referenciada, como eliminar o actualizar una fila, se realizará automáticamente la misma acción en la tabla actual.

Recomendado:  SQL Server RENAME Database: Cambia el nombre fácilmente

Para definir acciones en cascada, se utilizan las cláusulas `ON DELETE` y `ON UPDATE` seguidas de la acción deseada. Las acciones disponibles son:

– `CASCADE`: realiza la misma acción en la tabla actual.
– `SET NULL`: establece el valor de la columna de la tabla actual en NULL.
– `SET DEFAULT`: establece el valor de la columna de la tabla actual en su valor predeterminado.
– `NO ACTION`: no realiza ninguna acción en la tabla actual.

Por ejemplo, si queremos que al eliminar un cliente de la tabla `Clientes`, se eliminen automáticamente todos los pedidos asociados en la tabla `Pedidos`, la sintaxis sería la siguiente:

«`sql
ALTER TABLE Pedidos
ADD CONSTRAINT FK_Pedidos_Clientes
FOREIGN KEY (ClienteID)
REFERENCES Clientes (ID)
ON DELETE CASCADE;
«`

Restricciones adicionales

Además de la sintaxis básica y las acciones en cascada, también podemos agregar restricciones adicionales a las claves externas. Algunas de las restricciones más comunes son:

– `ON DELETE SET NULL`: establece el valor de la columna de la tabla actual en NULL cuando se elimina una fila en la tabla referenciada.
– `ON DELETE SET DEFAULT`: establece el valor de la columna de la tabla actual en su valor predeterminado cuando se elimina una fila en la tabla referenciada.
– `ON DELETE NO ACTION`: no permite eliminar una fila en la tabla referenciada si hay filas relacionadas en la tabla actual.
– `ON UPDATE SET NULL`: establece el valor de la columna de la tabla actual en NULL cuando se actualiza el valor de la columna en la tabla referenciada.
– `ON UPDATE SET DEFAULT`: establece el valor de la columna de la tabla actual en su valor predeterminado cuando se actualiza el valor de la columna en la tabla referenciada.
– `ON UPDATE NO ACTION`: no permite actualizar el valor de la columna en la tabla referenciada si hay filas relacionadas en la tabla actual.

Recomendado:  SQL Server Synonym: Qué es y cómo utilizar sinónimos en SQL Server

Ejemplos de sintaxis

A continuación, se presentan algunos ejemplos de sintaxis para crear claves externas en SQL Server:

1. Crear una clave externa sin acciones en cascada:

«`sql
ALTER TABLE Pedidos
ADD CONSTRAINT FK_Pedidos_Clientes
FOREIGN KEY (ClienteID)
REFERENCES Clientes (ID);
«`

2. Crear una clave externa con acción en cascada al eliminar una fila en la tabla referenciada:

«`sql
ALTER TABLE Pedidos
ADD CONSTRAINT FK_Pedidos_Clientes
FOREIGN KEY (ClienteID)
REFERENCES Clientes (ID)
ON DELETE CASCADE;
«`

3. Crear una clave externa con acción en cascada al actualizar una fila en la tabla referenciada:

«`sql
ALTER TABLE Pedidos
ADD CONSTRAINT FK_Pedidos_Clientes
FOREIGN KEY (ClienteID)
REFERENCES Clientes (ID)
ON UPDATE CASCADE;
«`

4. Crear una clave externa con restricción adicional para establecer el valor en NULL al eliminar una fila en la tabla referenciada:

«`sql
ALTER TABLE Pedidos
ADD CONSTRAINT FK_Pedidos_Clientes
FOREIGN KEY (ClienteID)
REFERENCES Clientes (ID)
ON DELETE SET NULL;
«`

5. Crear una clave externa con restricción adicional para no permitir eliminar una fila en la tabla referenciada si hay filas relacionadas en la tabla actual:

«`sql
ALTER TABLE Pedidos
ADD CONSTRAINT FK_Pedidos_Clientes
FOREIGN KEY (ClienteID)
REFERENCES Clientes (ID)
ON DELETE NO ACTION;
«`

La sintaxis para crear una clave externa en SQL Server es bastante sencilla. Podemos especificar la tabla y columna referenciada, así como definir acciones en cascada y restricciones adicionales según nuestras necesidades. Las claves externas son una herramienta poderosa para mantener la integridad de los datos en nuestras bases de datos relacionales.

Author

osceda@hotmail.com

Leave a comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *