¿Cómo definir un disparador que, al eliminar datos en una tabla, primero inserte los datos eliminados en otra tabla y luego realice la operación de eliminación?
La solución es la siguiente:
--Crear la tabla de prueba create?table?t_a(id?int, name?varchar(10)); create?table?t_b( id?int , nombre?varchar(10));--Insertar datos de prueba?en?t_a(id,nombre)?valores?(1,'a');--Crear?para?eliminar?activador crear?activador? trg_t_a_1? on?t_afor?deleteasbegininsert?into?t_b?select?id,name?from?deleted;end--Eliminar un dato de t_a delete?from?t_a?where?id=1;--Ver t_b p>
select?*?from?t_b
Función de los disparadores:
Los disparadores tienen las siguientes funciones:
Puede forzar la verificación o transformar datos.
Cuando se produce un error en el disparador, el resultado del cambio se deshará.
Algunos sistemas de gestión de bases de datos pueden utilizar activadores para el lenguaje de definición de datos (DDL), llamados activadores DDL.
El comando de cambio (EN LUGAR DE) se puede reemplazar según situaciones específicas.
Clasificación
[2]?SQL Server incluye tres tipos generales de activadores: activadores DML, activadores DDL y activadores de inicio de sesión.
Disparador DML
Cuando los datos en la tabla en la base de datos cambian, incluyendo insertar, actualizar, eliminar cualquier operación, si escribimos el disparador DML correspondiente para la tabla, entonces el disparador se ejecuta automáticamente. La función principal de los activadores DML es hacer cumplir las reglas comerciales y ampliar las restricciones del servidor Sql, los valores predeterminados, etc. Porque sabemos que las restricciones solo pueden restringir los datos en la misma tabla, mientras que los activadores pueden ejecutar cualquier comando Sql.
Disparador DDL
Es un nuevo disparador en Sql Server2005. Se utiliza principalmente para auditar y estandarizar las operaciones en tablas, disparadores, vistas y otras estructuras en la base de datos. Por ejemplo, modificar tablas, modificar columnas, agregar nuevas tablas, agregar nuevas columnas, etc. Se ejecuta cuando cambia la estructura de la base de datos. Lo usamos principalmente para registrar el proceso de modificación de la base de datos y restringir a los programadores la modificación de la base de datos, como no permitir la eliminación de ciertas tablas específicas.
Disparador de inicio de sesión
El desencadenador de inicio de sesión activará el procedimiento almacenado en respuesta al evento LOGIN. Este evento se genera cuando se establece una sesión de usuario con una instancia de SQL Server. El activador de inicio de sesión se activará después de que se complete la fase de autenticación del inicio de sesión, pero antes de que se establezca realmente la sesión del usuario. Por lo tanto, todos los mensajes de los desencadenadores que normalmente llegarían al usuario (como mensajes de error y mensajes de declaraciones PRINT) se pasan al registro de errores de SQL Server. Si la autenticación falla, el activador de inicio de sesión no se activará.