Creación de Triggers en SQL Server
En este artículo veremos los pasos básicos para crear Triggers en SQL Server
En este artículo, veremos cómo crear triggers en SQL Server. El ejemplo es aplicable en SQL Server 2008 y 2005.
Trigger.
Los triggers son usados principalmente para reaccionar ante eventos que suceden en la base de datos.
Por ejemplo, se usan triggers en las siguientes situaciones:
o Lanzar un email si es que se borra un usuario.
o Crear un registro en una tabla si es que se crea un usuario.
o Crear un archivo log si es que se inserta un dato en una tabla.
Existen 2 grandes categorías de Triggers:
1. Los DML triggers
2. Los DDL triggers
DML Triggers.
Son triggers que reaccionan ante eventos de inserción de datos en una tabla, actualización o Borrado de datos.
Por ejemplo, si borro el nombre de una persona de mi tabla de empleados, el trigger podría lanzar un email.
Estos DML triggers están asociados a una tabla. Por lo que se los crea y ve dentro de las tablas.
DDL Triggers.
Son triggers que se ejecutan al crear, borrar o modificar objetos. Por ejemplo si borro un usuario o una tabla, podría iniciar un archivo .bat.
Ejemplo.
Vamos al grano, ahora voy a crear un DML Trigger.
Lo que voy a hacer es generar un archivo log si es que se inserta un data en mi tabla.
Primeramente me creo una tabla:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[alumnos](
[id] [int] NULL,
[nombre] [nchar](30) NULL,
[apellido] [nchar](30) NULL
) ON [PRIMARY]
GO
Luego, creamos un trigger. En este caso voy a llamar al xp_cmdshell que es un procedimiento para ejecutar la línea de comandos.
Para habilitar el xp_cmdshell:
USE master;
GO
EXEC sp_configure 'show advanced option', '1';
RECONFIGURE;
USE master;
GO
EXEC sp_configure 'xp_cmdshell', '1';
RECONFIGURE WITH OVERRIDE;
Ahora que podemos correr líneas de comando, vamos a crear nuestro trigger. Nuestro trigger inserta en un archivo en el c:\sql_log.log el mensaje "Se insertaron nuevos datos en la tabla".
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER crearlog
ON dbo.alumnos
AFTER INSERT
AS
exec xp_cmdshell 'echo Se insertaron nuevos datos en la tabla>c:\sql_log.log'
Referencias.
• Creación de Triggers
Comentarios
Publicar un comentario