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