resumen: en este tutorial, aprenderá sobre la clave foránea de PostgreSQL y cómo agregar claves foráneas a tablas utilizando restricciones de clave foránea.
Introducción a la restricción de clave foránea de PostgreSQL
una clave foránea es una columna o un grupo de columnas en una tabla que hacen referencia a la clave principal de otra tabla.
la tabla que contiene la clave foránea se denomina tabla de referencia o tabla secundaria. Y la tabla referenciada por la clave foránea se denomina tabla referenciada o tabla principal.,
una tabla puede tener varias claves foráneas dependiendo de sus relaciones con otras tablas.
en PostgreSQL, se define una clave foránea utilizando la restricción de clave foránea. La restricción de clave foránea ayuda a mantener la integridad referencial de los datos entre las tablas hijo y padre.
una restricción de clave externa indica que los valores de una columna o un grupo de columnas de la tabla secundaria son iguales a los valores de una columna o un grupo de columnas de la tabla principal.,
sintaxis de restricción de clave foránea de PostgreSQL
lo siguiente ilustra una sintaxis de restricción de clave foránea:
en esta sintaxis:
- Primero, especifique el nombre de la restricción de clave foránea después de la palabra clave
CONSTRAINT
. La cláusulaCONSTRAINT
es opcional. Si lo omite, PostgreSQL asignará un nombre generado automáticamente. - En segundo lugar, especifique una o más columnas de clave externa entre paréntesis después de las palabras clave
FOREIGN KEY
., - En tercer lugar, especifique la tabla principal y las columnas de clave principal a las que hacen referencia las columnas de clave foránea en la cláusula
.
- Finalmente, especifique las acciones eliminar y actualizar en las cláusulas
ON DELETE
yON UPDATE
.
las acciones eliminar y actualizar determinan los comportamientos cuando se elimina y actualiza la clave principal de la tabla principal. Dado que la clave primaria rara vez se actualiza, el ON UPDATE action
no se utiliza a menudo en la práctica. Nos centraremos en la acción ON DELETE
.,
PostgreSQL soporta las siguientes acciones:
- SET NULL
- ESTABLECER como PREDETERMINADO
- RESTRINGIR
- NO ACTION
- CASCADA
PostgreSQL restricción de clave externa ejemplos
Las siguientes instrucciones crean el customers
y contacts
tablas:
En este ejemplo, la etiqueta customers
tabla es la tabla principal y el contacts
tabla es la tabla secundaria.
cada cliente tiene cero o muchos contactos y cada contacto pertenece a cero o un cliente.,
la columna customer_id
en la tabla contacts
es la columna de clave externa que hace referencia a la columna de clave primaria con el mismo nombre en la tabla customers
.
La siguiente restricción foreign key fk_customer
en el contacts
tabla define la etiqueta customer_id
como la clave externa:
Debido a la restricción de clave externa no tienen la etiqueta ON DELETE
y ON UPDATE
acción, el valor predeterminado NO ACTION
.,
sin acción
lo siguiente inserta datos en las tablas customers
y contacts
:
la siguiente instrucción elimina el ID de cliente 1 de la tabla customers
:
Code language: SQL (Structured Query Language) (sql)
debido a la ON DELETE NO ACTION
, PostgreSQL emite una violación de restricción porque las filas de referencia del ID de cliente 1 aún existen en la tabla contacts
:
la acción RESTRICT
similar a NO ACTION
., La diferencia solo surge cuando define la restricción de clave foránea como DEFERRABLE
con un modo INITIALLY DEFERRED
o INITIALLY IMMEDIATE
. Discutiremos más sobre esto en el siguiente tutorial.
SET NULL
el SET NULL
establece automáticamente NULL
en las columnas de clave externa en las filas de referencia de la tabla secundaria cuando se eliminan las filas a las que se hace referencia en la tabla principal.,
las siguientes instrucciones sueltan las tablas de ejemplo y las vuelven a crear con la clave foránea que usa la acción SET NULL
en la cláusula ON DELETE
:
las siguientes instrucciones insertan datos en la cláusula customers
y contacts
tablas:
para ver cómo funciona SET NULL
, eliminemos el cliente con id 1 de la customers
tabla:
Code language: SQL (Structured Query Language) (sql)
debido a la ON DELETE SET NULL
, las filas de referencia en la tabla contacts
se establecen en null., La siguiente instrucción muestra los datos en la tabla contacts
:
como se puede ver claramente en la salida, las filas que tienen el customer_id
1 ahora tienen el customer_id
establece NULL
Cascade
El ON DELETE CASCADE
elimina automáticamente todas las filas de referencia en la tabla secundaria cuando se eliminan las filas a las que se hace referencia en la tabla principal., En la práctica, el ON DELETE CASCADE
es la opción más utilizada.
las siguientes instrucciones recrean las tablas de ejemplo.,iv> cambia a CASCADE
:
la siguiente instrucción elimina el ID de cliente 1:
debido a la acción ON DELETE CASCADE
, todas las filas de referencia en el contacts
tabla se eliminan automáticamente:
establecer por defecto
El ON DELETE SET DEFAULT
establece el valor predeterminado en la columna de clave externa de las filas de referencia en la tabla secundaria cuando se eliminan las filas a las que se hace referencia en la tabla principal.,nt a una tabla existente
para agregar una restricción de clave foránea a la tabla existente, use el siguiente formulario de la instrucción ALTER TABLE:
Cuando agregue una restricción de clave foránea con la opción ON DELETE CASCADE
a una tabla existente, debe seguir estos pasos:
primero, elimine las restricciones de clave foránea existentes:
Code language: SQL (Structured Query Language) (sql)
primero, agregue una nueva restricción de clave foránea con ON DELETE CASCADE
acción:
en este tutorial, ha aprendido sobre las claves foráneas de PostgreSQL y cómo usar la restricción de clave foránea para crear claves foráneas para una tabla.,
- ¿Fue útil este tutorial ?
- YesNo
Deja una respuesta