Tablas mágicas en SQL Server

Las tablas mágicas son las tablas lógicas temporales que crea el servidor SQL cada vez que hay operaciones de inserción, eliminación o actualización (DML). La operación realizada recientemente en las filas se almacena automáticamente en tablas mágicas. Estas no son tablas físicas, pero son solo tablas internas temporales. Estas tablas mágicas no se pueden recuperar directamente, necesitamos usar activadores para acceder a estas tablas mágicas para obtener las filas eliminadas e insertadas.

Cuando se realizan las siguientes operaciones:
 

  • INSERTAR: 
    la fila insertada recientemente se agrega a la tabla mágica INSERTADA.
     
  • ELIMINAR:
    la fila eliminada recientemente se agrega a la tabla mágica ELIMINADA.
     
  • ACTUALIZAR:
    la fila actualizada se almacena en la tabla mágica INSERTADA y la fila anterior o la fila anterior se almacenan en la tabla mágica ELIMINADA.

Veamos cómo funciona esto usando MSSQL como servidor:

Creando una base de datos:
Creando una base de datos GeeksForGeeks usando la siguiente consulta SQL de la siguiente manera.

CREATE DATABASE GeeksForGeeks;

Usando la base de datos:
usando la base de datos del estudiante usando la siguiente consulta SQL de la siguiente manera.

USE GeeksForGeeks;

Creando mesa de estudiantes con consulta SQL de la siguiente manera:

CREATE TABLE students
( 
 stu_id varchar(10),
 stu_name varchar(20),
 branch varchar(20)
);

Verificación de la base de datos:
para ver la descripción de la tabla en la base de datos GeeksForGeeks, utilice la siguiente consulta SQL de la siguiente manera.

EXEC sp_columns students;

Insertar datos en la tabla:
Insertar filas en la tabla de estudiantes usando la siguiente consulta SQL de la siguiente manera:

INSERT INTO students VALUES
('1901401','DEVA','C.S'),
('1901402','HARSH','C.S'),
('1901403','ABHISHEK','C.S'),
('1901404','GARVIT','C.S'),
('1901405','SAMPATH','C.S');

Verificación de los datos insertados:
Ver la tabla después de insertar filas utilizando la siguiente consulta SQL de la siguiente manera.

SELECT * FROM students;

Creando un disparador T1 en la operación de inserción:

CREATE TRIGGER T1 ON students
AFTER INSERT
AS
BEGIN
SELECT * FROM INSERTED
END

Insertar entradas para verificar cómo el disparador recupera la tabla mágica INSERTADA:

INSERT INTO students VALUES
('1901406','PRADEEP','C.S'),
('1901407','DEVESH','C.S');
SELECT* FROM students ;

Creación de un disparador T2 en la operación de eliminación:

CREATE TRIGGER T2 ON students
AFTER DELETE
AS
BEGIN
SELECT * FROM DELETED
END

Eliminando la entrada para verificar cómo el activador recupera la tabla mágica ELIMINADA:

DELETE FROM students
WHERE stu_name = 'PRADEEP';
SELECT* FROM students ;

Creando un disparador T3 en la operación de actualización:

CREATE TRIGGER T3 ON students
AFTER UPDATE
AS
BEGIN
SELECT * FROM DELETED
SELECT* FROM INSERTED 
END

Actualizando la entrada para comprobar cómo el disparador recupera las tablas mágicas ELIMINADAS E INSERTADAS, ya que encontramos una entrada antigua en una entrada ELIMINADA y actualizada en la tabla mágica INSERTADA:

UPDATE students SET stu_name= 'DEVANSH' 
WHERE stu_id = '1901401'
SELECT* FROM students

Publicación traducida automáticamente

Artículo escrito por lokeshpotta20 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 *