Clave externa Postgresql

Clave externa Postgresql
Una clave extranjera es una o más columnas que tienen valores que dependen de la clave principal. Esta restricción se usa para unir dos tablas. En PostgreSQL, una clave extranjera ayuda a generar una relación entre las tablas, haciendo que una tabla sea una mesa parental y el otro un niño. La clave extranjera se puede crear usando:
  • Crear consulta de tabla
  • Actualizar/alterar consulta

Sintaxis

[Nombre de restricción] Clave exterior (columnas)
Referencias Parent_table (columnas)
[En la acción de eliminación]
[En la acción de actualización]

La tabla de referencia es la tabla principal. Y la columna para la clave extranjera es la clave principal del padre.

Introducción de la clave extranjera en la declaración Crear

En cuanto a las limitaciones de clave extranjera, necesitamos dos tablas para ilustrar el concepto. Comencemos por definir una tabla "diseñador", y el segundo es "categoría". Ambas tablas se crean utilizando una declaración Crear.

>> Crear tabla Designer (Designer_id int generado siempre como identidad, diseñer_name varchar (50) no nulo, clave primaria (diseñador_id));

En la tabla "diseñador", Designer_id se establece como una clave principal. Ahora crea la segunda tabla.

>> Crear categoría de tabla (category_id int generada siempre como identidad, diseñer_id int, category_id int, category_name varchar (200) no nulo, clave primaria (category_id), restricción fk_designer extranjero clave (designer_id) Referencias Designer (diseñador_id)));

En esta tabla, Category_ID se establece como una clave principal. Como ambas tablas deben unirse a la restricción de la clave extranjera. Hacemos que el "Designer_id" la clave extranjera en esta tabla. La tabla de referencia se menciona en la tabla para que la consulta se pueda ejecutar fácilmente buscando en la tabla.

Restricción fk_designer
Clave externa (Designer_id)
Referencias Designer (Designer_id));

La tabla del diseñador es la tabla principal, mientras que la tabla de "categoría" es la mesa infantil. Cada diseñador trabaja en cero o más categorías de vestimenta, y uno o más diseñadores consideran cada categoría de vestimenta.

NOTA: Para hacer una clave extranjera de la identificación de una tabla en la segunda tabla, es importante hacer que esa identificación específica como clave primaria en su tabla. De lo contrario, no formará una clave extranjera en la otra tabla. Ocurrirá un error al crear la clave extranjera.

Sin acción

Después de la creación de tablas, usamos para ingresar valores en él mediante el comando "insertar".

>> Insertar en los valores del diseñador (Designer_Name) ('Ahmad Shah'), ('Sajjad Hassan');

De manera similar en el caso de la segunda tabla, ingrese los valores.

>> Insertar en los valores de categoría (Designer_id, Category_Name) (1, 'Frock'), (1, 'Frock'), (2, 'Suit'), (2, 'Suit-1');

En la tabla "Categoría", los valores se insertarán en dos columnas, incluyendo Category_Name y Designer_ID. Hemos agregado el mismo número para la ID y el mismo nombre para la categoría_name aquí para cumplir con la condición. Ahora aplique el comando Eliminar para probar el tipo de "no acción" de la clave extranjera. En este comando, hemos proporcionado un número de identificación para eliminar la fila específica de la tabla.

>> Eliminar del diseñador donde diseñador_id = 1;

Esta consulta no se ejecutará con éxito. Mostrará un mensaje de error como se muestra en el SNAP como se mencionó anteriormente. Este error se debe a "sin no eliminar ninguna acción". PostgreSQL muestra la violación de la restricción porque el diseñador_id = 1 es para dos filas actualmente presentes en la tabla.

Establecer nulo como opción en la cláusula de eliminación

Cree una tabla llamada "Empleado" que tenga EMP_ID como clave principal.

>> Crear empleado de tabla (emo_id generado siempre como identidad, emp_name varchar (50) no nulo, clave primaria (emp_id));

Cuando ejecutamos la consulta, se muestra un mensaje que muestra que nuestra consulta se ejecuta correctamente. Después de crear la tabla de empleados, cree su "información" de la tabla infantil utilizando "EMP_ID" como la clave extranjera.

>> Crear información de la tabla (info_id int generado siempre como identidad, info_id int, emp_id int, info_name varchar (200) no nulo, clave primaria (info_id), restricción fk_employee key (emp_id) References empleado (emp_id) en eliminar set null) ;

Ejecute la consulta y verá que se crea la tabla. Al igual que la declaración de tabla "Crear" utilizada antes, esta es la misma. Aquí hemos agregado propiedades.

"En eliminar set null". Esta acción se aplica en la cláusula ON Eliminar. Ahora tenemos que llenar las tablas con los valores.

>> Insertar en valores de empleado (Emp_name) ('Sophia Smith'), ('Rubi Williams'), ('Victoria Gomex'); >> Insertar en los valores de información (emp_id, info_name) (1, 'empleado'), (1, 'gerente'), (2, 'gerente'), (3, 'empleado');

El comando Eliminar consiste en la cláusula "dónde" para identificar la identificación que se eliminará de la fila en la tabla empleado.

>> Eliminar del empleado donde emp_id = 2;

Los datos relevantes se eliminarán en la ejecución de la consulta. Veremos la tabla resultante que queda después de esa consulta.

>> seleccionar * de la información;

Las filas que tienen la referencia específica en la tabla infantil 'Información' se configuran en NULL porque utilizamos la acción NULL ON SETET SET en el comando en la creación de la tabla.

Usando un comando alter tabla

En los ejemplos anteriores, hemos visto cómo aplicar las limitaciones en el momento de la creación de las tablas. ¿Qué pasa si ha creado las tablas con restricciones FK (clave extranjera), y más tarde, desea agregar restricciones?? Aquí hay una solución a esta pregunta. En primer lugar, crearemos dos tablas. Pero al momento de crear la tabla, no hay necesidad de identificar la clave extranjera en la segunda tabla para hacerlo de niño.

>> Crear enfermera de tabla (Nurse_id int no nulo, nurse_name varchar (55) no nulo, nurse_location varchar (55) no nulo, clave primaria (nurse_id)); >> Crear tabla clínica clínica_id int, nurse_id int, clinic_details varchar (50) no nulo, clinic_type varchar (50) no nulo);

Esta tabla no contiene las restricciones y referencias de clave extranjera, etc. Después de la inserción, ahora actualizaremos la tabla permitiendo las restricciones.

>> Alteran la clínica de la tabla Agregar restricción FK_NURSE Clave exterior (clínica_id) Referencias Enfermera (Nurse_ID) en Delete Cascade en la actualización de actualización;

La tabla tendrá la clave extranjera ahora después de la alteración.

Eliminar las restricciones de la tabla

Para este propósito, usamos el comando alter. Este comando solo eliminará las restricciones de la tabla.

Esto es necesario para eliminar toda la mesa. Pero es imposible eliminar o soltar una tabla de este tipo que tenga una unión con la otra tabla en forma de una clave extranjera. Entonces, en primer lugar, eliminamos la FK_Constraint de la tabla primero creada de la segunda. Considere la tabla "diseñador" y la tabla infantil "categoría".

>> alterar la categoría de la categoría de caída de caída fk_designer;

Después de ver que la consulta se ejecuta. Ahora aplique el comando de caída.

>> Table de caída si existe el diseñador;

El diagrama representa las claves extrañas dentro de las tablas. De la representación ERD, tomamos un chasquido para aclarar la ambigüedad con respecto a las limitaciones de la imagen; Puedes ver las uniones en las tablas que hemos creado en este artículo.

Conclusión

"Clave externa PostgreSQL" muestra la relación de unión entre dos tablas. Obtener el registro de una tabla causando un cambio en otro solo se puede hacer a través de esta restricción. La relación matriz-hijo está incorporada compartiendo las teclas. Esta clave se puede introducir en la creación o actualización de la tabla. Ambos métodos se explican en esta guía. Estos ejemplos describen la importancia de las claves en todas las tablas utilizadas en cualquier base de datos.