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
No hay comentarios:
Publicar un comentario