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.
servidor SQL inicia un DESPUÉS DEL BORRAR el disparador siempre que ocurra un evento de declaración de borrado.
Puede descargar el script de activación de AFTER DELETE utilizado aquí para que pueda ejecutar este script en su servidor SQL local, mientras sigue el problema a continuación.
Queremos realizar un seguimiento de los registros eliminados de la tabla de empleados en la tabla employee_history.
Si algún empleado abandona la empresa, su registro se eliminará de la tabla de empleados. Sin embargo, se insertará en la tabla employee_history utilizando el desencadenador AFTER DELETE.
Nuestro ejemplo tendrá dos tablas: empleado mesa y historia de los empleados mesa.
Crearemos estas tablas y las rellenaremos con algunos datos.
/ * Verifique si la tabla de empleados ya existe o no * / IF OBJECT_ID ('EMPLEADO') NO ES UNA TABLA DE GOTAS NULA EMPLEADO IR / * Crear una tabla de empleados si no existe * / CREAR LA TABLA DE EMPLEADOS (LLAVE PRIMARIA INTELIGENTE DE EMPLEO, 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 una tabla employee_history con la misma estructura que la tabla de empleados sin filas * / IF OBJECT_ID ( 'EMPLOYEE_HISTORY') NO ES NULAR LA TABLA DE EMPLEADOS EMPLOYEE_HISTORY GO SELECT * IN EMPLOYEE_HISTORY DE EMPLOYEE DONDE 1 = 0 - Esto llenará la tabla Employee_history con 0 filas GO / * Vea los registros de la tabla de ambas tablas. Tenemos cuatro filas en ambas tablas * / SELECT * de EMPLOYEE e - 4 filas SELECT * de EMPLOYEE_HISTORY eh - 0 filas GO
Ahora, si se elimina cualquier registro eliminado de la tabla de empleados, debemos insertarlo en la tabla employee_history para futuras referencias. Por lo tanto, en este caso, crearemos un desencadenador AFTER DELETE.
/ * Después de Eliminar el desencadenante en la tabla de empleados * / IF OBJECT_ID ('TRG_EmployeeHistory') NO ES NULL DROP TRIGGER TRG_EmployeeHistory GO CREATE TRIGGER TRG_EmployeeHPP.JP.JPP.JP.JP.P.P.P.P.P.P.P.P.P.
Ahora que tenemos un desencadenante AFTER DELETE en la tabla de empleados, eliminaremos una fila de la tabla de empleados para ver el desencadenante en funcionamiento.
La fila eliminada se insertará en la tabla employee_history.
/ * Eliminar un registro de la tabla de empleados * / ELIMINAR DEL EMPLEADO DONDE EMPID = 501 GO / * Observe ambas tablas. El registro eliminado del empleado se inserta en EMPLOYEE_HISTORY * / SELECT * de EMPLOYEE e - 3 filas SELECT * de EMPLOYEE_HISTORY eh - 1 fila GO
los BORRADO tabla es una tabla mágica que mantiene las filas que se eliminan. En el activador AFTER DELETE, usamos la tabla DELETED para realizar un seguimiento de las filas eliminadas. Esas filas se insertan en la tabla EMPLOYEE_HISTORY.
También puede ir a través de SQL Server: Codificar el activador de inserción posterior.