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áusula CONSTRAINT 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 y ON 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 DEFERRABLEcon un modo INITIALLY DEFERREDo 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