CREATE TRIGGER [dbo].[nombre_trigger]
ON [dbo].[tabla1]
WITH EXECUTE AS CALLER
FOR INSERT
AS
BEGIN
DECLARE @variable1 DECIMAL (1,0)
DECLARE @variable2 CHAR (3)
DECLARE @variable3 CHAR(3)
DECLARE @variable4 VARCHAR(100)
DECLARE @variablesec CHAR(3)
.
.
.
.
. --- declaracion de variables
.
.
.
.
.
.
print 'Inicializacion de procesos'
-- Obtener los registros insertados por medio del trigger.
SELECT @variable1=campo1, @variable2=campo2,@variable3=campo3, @variable4=campo4, ........... etc FROM INSERTED
-- inserted es la insercion en tabla 1 para este ejemplo
-- la tabla1 tiene un campo error para guardar los mensajes de error
-- Establecer el mensaje de error.
SET @msg='PROCESO NO PUDO SER REGISTRADO'
-- Validar que el registro no este ya registrado en las tabla de insercion en mi caso si era 0 busca cualquiera de las condiciones
-- caso contrario si es 1 guarda un mensaje de error
IF (@variable4=0)
BEGIN
-- declaracion de 1er proceso
IF (@variable1='condicion1')
BEGIN
BEGIN
-- Establecer las variables necesarias del proceso
SET @variable1=(Condicion que quiero de la variable)
SET @variable2=(Condicion que quiero de la variable)
-- lo que se necesite establecer en las variables
-- yo necesitaba que se me inserte un secuencial en la tabla2 asi que les dejo como hice
-- Generación de secuenciales
SET @variablesec=((SELECT MAX(campo1) FROM tabla2 WHERE isnumeric(campo1)= 1 AND codigous BETWEEN 200 AND 300 ) + 1)
-- el isnumeric es porque el campo era tipo char
-- Inicialización secuencial para el primer campo, despues del primer campo se ejecuta el set anterior hasta que abarque el rango que dispongamos
IF @variablesec IS NULL
BEGIN
SET @variablesec= 200
PRINT 'Secuencia iniciada'
END
ELSE
-- Ejecucion de procedimiemto
EXEC db_Procedimiento1 @variablesec,@varproc1_2 ,@varproc1_3, ...........@varproc1_n;-- todos los sp me servian para la tabla2
END
ELSE
BEGIN
-- Actualizando mensaje de error
SET @msg='Lo que desee que despligue el mensaje'
--Actualizando tabla1 si deseo guardar el mensaje
UPDATE tabla1
SET error=@msg
WHERE @variable1=campo1
END
END
ELSE
BEGIN
IF (@variable1='condicion2')
BEGIN
BEGIN
-- Ejecucion de segundo proceso
EXEC db_Procedimiento2 @varproc2_1,@varproc2_2 ,@varproc2_3, ...........@varproc2_n;
END
ELSE
BEGIN
-- Actualizando mensaje de error
SET @msg='Lo que desee que despligue el mensaje'
--Actualizando tabla1 si deseo guardar el mensaje
UPDATE tabla1
SET error=@msg
WHERE @variable1=campo1
END
END
ELSE
BEGIN
IF (@variable1='condicion3')
BEGIN
BEGIN
-- Ejecucion de tercer proceso
EXEC db_Procedimiento3 @varproc3_1,@varproc3_2 ,@varproc3_3, ...........@varproc3_n;
END
ELSE
BEGIN
-- Actualizando mensaje de error
SET @msg='Lo que desee que despligue el mensaje'
--Actualizando tabla1 si deseo guardar el mensaje
UPDATE tabla1
SET error=@msg
WHERE @variable1=campo1
END
END
ELSE
BEGIN
IF (@variable1='condicion 4')
BEGIN
BEGIN
-- Ejecucion de cuarto procedimiento
EXEC db_Procedimiento4 @varproc4_1,@varproc4_2 ,@varproc4_3, ...........@varproc4_n;
END
ELSE
BEGIN
-- Actualizando mensaje de error
SET @msg='Lo que desee que despligue el mensaje'
--Actualizando tabla1 si deseo guardar el mensaje
UPDATE tabla1
SET error=@msg
WHERE @variable1=campo1
END
END
ELSE
BEGIN
IF (@variable1='condicion5')
BEGIN
BEGIN
-- Ejecucion de quinto proceso
EXEC db_Procedimiento5 @varproc5_1,@varproc5_2 ,@varproc5_3, ...........@varproc5_n;
END
ELSE
BEGIN
-- Actualizando mensaje de error
SET @msg='Lo que desee que despligue el mensaje'
--Actualizando tabla1 si deseo guardar el mensaje
UPDATE tabla1
SET error=@msg
WHERE @variable1=campo1
END
END
ELSE
BEGIN
IF (@variable1='condicion 6')
BEGIN
BEGIN
-- Ejecucion de sexto proceso
EXEC db_Procedimiento6 @varproc6_1,@varproc6_2 ,@varproc6_3, ...........@varproc6_n;
END
ELSE
BEGIN
-- Actualizando mensaje de error
SET @msg='Lo que desee que despligue el mensaje'
--Actualizando tabla1 si deseo guardar el mensaje
UPDATE tabla1
SET error=@msg
WHERE @variable1=campo1
END
END
ELSE
BEGIN
-- Actualizando mensaje de error
SET @msg='Lo que desee que despligue el mensaje'
--Actualizando tabla1 si deseo guardar el mensaje
UPDATE tabla1
SET error=@msg
WHERE @variable1=campo1
END
END
END
END
END
END
END
-- El registro se encontraba procesado.
ELSE
BEGIN
-- Establecer las variables necesarias del proceso
SET @msg='REGISTRO SE ENCONTRABA PROCESADO EN LA TABLA DE INSERCION '
-- Actualizar el campo error tabla1 con el mensaje de error si @variable4 es 1
UPDATE tabla1
SET error=@msg
WHERE @variable1=campo1
END
END