Consulta SQL para demostrar una anomalía de actualización en la integridad referencial en una tabla

En SQL, existe un concepto de integridad referencial. Esto significa que una clave externa puede tomar referencia de la clave principal de otra tabla. Existen básicamente 3 anomalías en este concepto. Aquí, discutimos sobre la anomalía de actualización . Esto significa que si una entrada está presente en la columna de clave externa de la tabla de destino, esa entrada no se puede actualizar en la columna de clave principal de la tabla base. Esto se ilustra a continuación. Para este artículo, utilizaremos Microsoft SQL Server como nuestra base de datos.

Paso 1: crear una base de datos. Para esto, use el siguiente comando para crear una base de datos llamada GeeksForGeeks.

Consulta:

CREATE DATABASE GeeksForGeeks

Producción:

Paso 2: use la base de datos GeeksForGeeks. Para esto, use el siguiente comando.

Consulta:

USE GeeksForGeeks

Producción:

Paso 3: Cree una tabla STUDENT_INFO dentro de la base de datos GeeksForGeeks. Esta tabla tiene 3 columnas, a saber, ROLL_NO, STUDENT_NAME y BRANCH que contienen el número de registro, el nombre y la rama de varios estudiantes.

Consulta:

CREATE TABLE STUDENT_INFO(
ROLL_NO INT PRIMARY KEY,
STUDENT_NAME VARCHAR(10),
BRANCH VARCHAR(5)
);

Producción:

Paso 4: Describa la estructura de la tabla STUDENT_INFO.

Consulta:

EXEC SP_COLUMNS STUDENT_INFO;

Producción:

Paso 5: inserte 3 filas en la tabla STUDENT_INFO.

Consulta:

INSERT INTO STUDENT_INFO VALUES(1,'JIM','CSE');
INSERT INTO STUDENT_INFO VALUES(2,'TIM','ELE');
INSERT INTO STUDENT_INFO VALUES(3,'PAM','ECE');

Producción:

Paso 6: Muestre todas las filas de la tabla STUDENT_INFO.

Consulta:

SELECT * FROM STUDENT_INFO;

Producción:

Paso 7: Cree una tabla STUDENT_MARKS dentro de la base de datos GeeksForGeeks. Esta tabla tiene 3 columnas, a saber, ROLL_NO, SUBJECT y MARKS que contienen el número de lista, el tema y las calificaciones de varios estudiantes. Aquí, la columna ROLL_NO actúa como una clave externa que hace referencia a la columna ROLL_NO de la tabla STUDENT_INFO, que es la clave principal de la tabla STUDENT_INFO.

Consulta:

CREATE TABLE STUDENT_MARKS(
ROLL_NO INT REFERENCES STUDENT_INFO(ROLL_NO),
SUNJECT VARCHAR(10),
MARKS INT
);

Producción:

Paso 8: Describa la estructura de la tabla STUDENT_MARKS.

Consulta:

EXEC SP_COLUMNS STUDENT_MARKS;

Producción:

Paso 9: inserte 2 filas en la tabla STUDENT_MARKS.

Consulta:

INSERT INTO STUDENT_MARKS VALUES(1,'CPP',98);
INSERT INTO STUDENT_MARKS VALUES(2,'DBMS',89);

Producción:

Paso 10: Muestre todas las filas de la tabla STUDENT_MARKS.

Consulta:

SELECT * FROM STUDENT_MARKS;

Producción:

Paso 11: actualice 1 fila en la tabla STUDENT_INFO donde ROLL_NO es 3 y establezca ROLL_NO en 30. La entrada para la columna ROLL_NO aquí, es decir, 3, no existe en la tabla de destino, es decir, STUDENT_MARKS.

Consulta:

UPDATE STUDENT_INFO SET ROLL_NO=30 WHERE ROLL_NO=3;

Nota: La Actualización es exitosa ya que la anomalía de la Actualización no se está violando ya que el número de registro 3 está ausente en la tabla de destino STUDENT_MARKS.

Producción:

Paso 12: Muestre toda la tabla STUDENT_INFO actualizada.

Consulta:

SELECT * FROM STUDENT_INFO;

Producción:

Paso 13: actualice 1 fila de la tabla STUDENT_INFO donde ROLL_NO es 2 y establezca ROLL_NO en 20. La entrada para la columna ROLL_NO aquí, es decir, 2, existe en la tabla de destino, es decir, STUDENT_MARKS.

Consulta:

UPDATE STUDENT_INFO SET ROLL_NO=20 WHERE ROLL_NO=2;

Nota: La actualización no es exitosa y se genera un error de integridad referencial ya que se está violando la anomalía de actualización ya que el número de lista 2 está presente en la tabla de destino STUDENT_MARKS.

Producción:

Publicación traducida automáticamente

Artículo escrito por abhisri459 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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