Anuncios

IT Certification Category (Spanish)468x60

martes, 15 de febrero de 2011

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

People who read this post also read :