TRIGGER EN SQL SERVER 2012












Los Triggers o disparadores son bloques de codigo que se ejecutan automaticamente al ocurrir un evento en una tabla establecida, ya que el disparador se encuentra asociado a una tabla en especifico.
Los eventos se configuran en el disparador indicando si se ejecutara antes o despues de una insercion, actualizacion o eliminacion.
Sintaxis de un Trigger

CREATE [ OR ALTER ] TRIGGER [ schema_name . ]trigger_name 
ON { table | view } [ WITH <dml_trigger_option> [ ,...n ] ] 
{ FOR | AFTER | INSTEAD OF }
 { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } 
[ WITH APPEND ] [ NOT FOR REPLICATION ] AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > } 

<dml_trigger_option> ::= 
[ ENCRYPTION ] 
[ EXECUTE AS Clause ] 

<method_specifier> ::= 
assembly_name.class_name.method_name

--Fuente: https://docs.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql

Ejemplo de un Trigger Validar Edad


CREATE TRIGGER TR_VALIDAR_EDAD
   ON CLIENTE
   INSTEAD OF INSERT 
AS 
BEGIN
DECLARE @EDAD INT;
SET @EDAD=(SELECT (DATEDIFF(YEAR,FECHANAWC,GETDATE())) from inserted);
IF (@EDAD<18) 
RAISERROR('SOLO SE PUEDEN INGRESAR PERSONAS CON EDAD MAYOR O IGUAL A 18 AÑOS',16,217)WITH LOG;

END

GO

Haciendo la prueba si el trigger funciona correctamente.










Como podemos observar nos aparece un mensaje en rojo siendo justamente el que escribimos como resultado de la condicion si era menor de edad. Despues no aparece 1 fila insertada, esto aparece porque colocamos la instruccion "WITH LOG" despues de RAISERROR, si queremos ver los logs de SQL Server donde se registra el evento de error, hacemos los siguientes pasos:
  • Abrir la carpeta Administracion en el panel explorador de objetos y click derecho en la carpeta Registros de SQL Server.
  • Click Derecho Vista -> Registro de SQL Server.
Nos aparecere una ventana con los datos del mensaje que colocamos en el trigger.

Comentarios