Un disparador es un tipo especial de procedimiento almacenado que se ejecuta cuando una instrucción INSERT, DELETE o UPDATE modifica los datos en una tabla.
SQL Server inicia una Disparador despues de insertar siempre que ocurra un evento de inserción de declaración.
Descargue el script AFTER INSERT TRIGGER utilizado aquí con ejemplos para que pueda ejecutar el script en su máquina SQL Server mientras sigue el problema que se encuentra a continuación.
Nuestro objetivo es que cuando se inserta un registro en la tabla de empleados, también queremos que este registro se inserte en la tabla employee_backup. Nuestro ejemplo tendrá dos tablas: empleado y employee_backup. Crearemos estas tablas y las rellenaremos con algunos datos.
/ * Verifique si la tabla de empleados ya existe * / IF OBJECT_ID ('EMPLEADO') NO ES UNA TABLA DE GOTAS NULA EMPLEADO GO / * Crear una tabla de empleados si no existe * / CREATE TABLE EMPLOYEE (LLAVE PRIMARIA EMPID INT, VARCHAR FNAME) 25), LNAME VARCHAR (25),) GO / * Rellenar la tabla de empleados con filas de muestra * / INSERTAR EN EL EMPLEADO (EMPID, FNAME, LNAME) VALORES (500, 'John', 'Smith'), (501, 'Alex' , 'Admas'), (502, 'Eric', 'James'), (503, 'Shaun', 'Marsh') GO / * Crear y sincronizar la tabla employee_backup con registros de la tabla de empleados para que ambas tablas tengan la misma los registros * / IF OBJECT_ID ('EMPLOYEE_BACKUP') NO ES NULL DROP TABLE EMPLOYEE_BACKUP GO SELECT * INTO EMPLOYEE_BACKUP DE EMPLOYEE GO / * Vea los registros de la tabla en ambas tablas. Tenemos cuatro filas en ambas tablas * / SELECT * de EMPLOYEE SELECT * de EMPLOYEE_BACKUP GO
Ahora, necesitamos mantener ambas tablas sincronizadas para que cuando se inserta un registro en EMPLEADO se inserte automáticamente en EMPLOYEE_BACKUP. En tal caso, necesitamos un desencadenador AFTER INSERT.
Vamos a crear una Disparador despues de insertar en la mesa de empleados.
/ * Después de insertar el desencadenante en la tabla de empleados * / IF OBJECT_ID ('TRG_InsertSyncEmp') NO ES NULL DROP TRIGGER TRG_InsertSyncEmp GO CREATE TRIGGER TRPG INSPART INSP.P.P.P. INSP.
Nuestro disparador ha sido creado con éxito. Ahora, insertaremos un registro en la tabla de empleados, y tendremos el mismo registro en la tabla employee_backup porque hemos creado un desencadenador AFTER INSERT en la tabla de empleados.
los INSERTADOtabla es una tabla especial que mantiene solo las filas que se insertan; por lo tanto, estamos utilizando esta tabla INSERTADA para mantener ambas tablas sincronizadas. Estamos insertando las filas de la tabla INSERTED que se llena con las declaraciones de inserción hechas en la tabla employee en la tabla employee_backup.
/ * Insertar un registro en la tabla de empleados. Aquí se ejecutará un activador de inserción, y el mismo registro se insertará en la tabla employee_backup * / INSERT INTO EMPLEADO (EMPID, FNAME, LNAME) VALORES (504, 'Vish', 'Dalvi')
/ * Ver que ambas tablas están sincronizadas con el mismo número de registros * / SELECT * de EMPLOYEE SELECT * de EMPLOYEE_BACKUP GO
El desencadenador AFTER INSERT en la tabla EMPLOYEE, tan pronto como encuentra una declaración de inserción, inmediatamente invoca otra instrucción de inserción para insertar la misma fila en la tabla EMPLOYEE_HISTORY.