¿Cómo actualizar dos tablas en una declaración en SQL Server?

En SQL, existe el requisito de una sola consulta/declaración para realizar simultáneamente 2 tareas al mismo tiempo. Por ejemplo, actualizar 2 tablas diferentes juntas en una sola consulta/declaración. Esto implica el uso de la cláusula BEGIN TRANSACTION y la cláusula COMMIT . Las cláusulas UPDATE individuales se escriben entre las anteriores para ejecutar ambas actualizaciones simultáneamente. Lo mismo se muestra en el siguiente artículo. 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 ECONOMICS_MARKS dentro de la base de datos GeeksForGeeks. Esta tabla tiene 3 columnas, a saber, ID, S_NAME y ECO_MARKS que contienen el número de registro y el nombre de los estudiantes y las calificaciones obtenidas por los estudiantes en la materia de economía.

Consulta:

CREATE TABLE ECONOMICS_MARKS(
ID INT,
S_NAME VARCHAR(10),
ECO_MARKS INT);

Producción:

Paso 4: Describa la estructura de la tabla ECONOMICS_MARKS.

Consulta:

EXEC SP_COLUMNS ECONOMICS_MARKS;

Producción:

Paso 5: Cree una tabla COMMERCE_MARKS dentro de la base de datos GeeksForGeeks. Esta tabla tiene 3 columnas, a saber, ID, S_NAME y COM_MARKS que contienen el número de registro y el nombre de los estudiantes y las calificaciones obtenidas por los estudiantes en la materia de comercio.

Consulta:

CREATE TABLE COMMERCE_MARKS(
ID INT,
S_NAME VARCHAR(10),
COM_MARKS INT);

Producción:

Paso 6: Describa la estructura de la tabla COMERCIO_MARCAS.

Consulta:

EXEC SP_COLUMNS COMMERCE_MARKS;

Producción:

Paso 7: inserte 5 filas en la tabla ECONOMICS_MARKS.

Consulta:

INSERT INTO ECONOMICS_MARKS VALUES(1,'SAM',70);
INSERT INTO ECONOMICS_MARKS VALUES(2,'AMY',68);
INSERT INTO ECONOMICS_MARKS VALUES(3,'EMMA',69);
INSERT INTO ECONOMICS_MARKS VALUES(4,'ROB',57);
INSERT INTO ECONOMICS_MARKS VALUES(5,'KEVIN',65);

Producción:

Paso 8: Muestre todas las filas de la tabla ECONOMICS_MARKS.

Consulta:

SELECT * FROM ECONOMICS_MARKS;

Producción:

Paso 9: inserte 5 filas en la tabla COMMERCE_MARKS.

Consulta:

INSERT INTO COMMERCE_MARKS VALUES(1,'SAM',80);
INSERT INTO COMMERCE_MARKS VALUES(2,'AMY',88);
INSERT INTO COMMERCE_MARKS VALUES(3,'EMMA',90);
INSERT INTO COMMERCE_MARKS VALUES(4,'ROB',75);
INSERT INTO COMMERCE_MARKS VALUES(5,'KEVIN',56);

Producción:

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

Consulta:

SELECT * FROM COMMERCE_MARKS;

Producción:

Paso 11: actualice las marcas de economía y comercio del estudiante que tiene id = 1 a 80 y 75 respectivamente usando una sola consulta. Esto implica 2 pasos. Primero, realice JOIN de la tabla ECONOMICS_MARKS y la tabla COMMERCE_MARKS . Luego, utilizando ALIAS de las tablas que son E y C respectivamente, compare la identificación de los estudiantes (para asegurarse de que se elija la misma identificación de ambas tablas) Y finalmente compare la identificación del estudiante con 1(valor dado). Cuando se cumplan ambas condiciones, ACTUALIZAR las marcas correspondientes a 80 y 75 . Todo esto debe encerrarse entre BEGIN TRANSACTION y COMMIT para tratarlo como una sola operación ATOMIC . Esta consulta implica la actualización de expedientes pertenecientes a un mismo DNI de alumno .

Sintaxis:

BEGIN TRANSACTION;
UPDATE TABLE_1
SET TABLE_1.TABLE_1_COLUMN = VALUE_1
FROM TABLE_1 T1, TABLE_2 T2
WHERE T1.ID = T2.ID
AND T1.ID = ID_VALUE_1;
UPDATE TABLE_2
SET TABLE_2.TABLE_2_COLUMN = VALUE_2
FROM TABLE_1 T1, TABLE_2 T2
WHERE T1.ID = T2.ID
AND T2.ID = ID_VALUE_2;
COMMIT;

Consulta:

BEGIN TRANSACTION;
UPDATE ECONOMICS_MARKS
SET ECONOMICS_MARKS.ECO_MARKS = 80
FROM ECONOMICS_MARKS E, COMMERCE_MARKS C
WHERE E.ID = C.ID
AND E.ID = 1;
UPDATE COMMERCE_MARKS
SET COMMERCE_MARKS.COM_MARKS = 75
FROM ECONOMICS_MARKS E, COMMERCE_MARKS C
WHERE E.ID = C.ID
AND C.ID = 1;
COMMIT;

Producción:

Paso 12: Muestre todas las filas de la tabla ECONOMICS_MARKS actualizada.

Consulta:

SELECT * FROM ECONOMICS_MARKS;

Nota – El valor de la columna ECO_MARKS para el ID 1 se actualiza a 80 .

Producción:

Paso 13: Muestre todas las filas de la tabla COMMERCE_MARKS actualizada.

Consulta:

SELECT * FROM COMMERCE_MARKS;

Nota: El valor de la columna COM_MARKS para el ID 1 se actualiza a 75 .

Producción:

Paso 14: actualice las calificaciones de economía del estudiante que tiene id=2 a 86 y las calificaciones de comercio del estudiante que tiene id=3 a 99 usando una sola consulta. Esta consulta implica la actualización de expedientes pertenecientes a los diferentes carnés de alumnos .

Consulta:

BEGIN TRANSACTION;
UPDATE ECONOMICS_MARKS
SET ECONOMICS_MARKS.ECO_MARKS = 86
FROM ECONOMICS_MARKS E, COMMERCE_MARKS C
WHERE E.ID = C.ID
AND E.ID = 2;
UPDATE COMMERCE_MARKS
SET COMMERCE_MARKS.COM_MARKS = 99
FROM ECONOMICS_MARKS E, COMMERCE_MARKS C
WHERE E.ID = C.ID
AND C.ID = 3;
COMMIT;

Producción:

Paso 15: Muestre todas las filas de la tabla ECONOMICS_MARKS actualizada.

Consulta:

SELECT * FROM ECONOMICS_MARKS;

Nota – El valor de la columna ECO_MARKS para el ID 2 se actualiza a 86 .

Producción:

Paso 16: Muestre todas las filas de la tabla COMMERCE_MARKS actualizada.

Consulta:

SELECT * FROM COMMERCE_MARKS;

Nota : el valor de la columna COM_MARKS para el ID 3 se actualiza a 99 .

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 *