Prueba de Trigger

    Jarod Cervantes Gutiérrez 2:00 - 3:00, 3:40 - 6:00 (3 horas y 20 min) 

Se empezó tratando de probar un trigger que cree un estado de cuenta cada que se crea una cuenta.

Para eso se borraron tablas para empezar pruebas.

Se borro la tabla que carga los XML, así que se cargó de nuevo. Se tardo un poco pues el XML que se cargó de nuevo no era el correcto.

Además se cambio el orden en que se cargan los catálogos, se coloco tipo moneda antes de tipo cuenta, porque generaba un error, TipoCuentaAhorro tiene FK de TipoMoneda.

Se decidió no continuar con el trigger e ir probando como se iban haciendo la carga de datos, pues habían errores.

Se continuo con el SP de la simulación para cargar otros datos, ya había una parte que cargaba las persona y las cuentas, se agregaron el beneficiario. No insertaba la cantidad correcta de entidades. Se estuvo buscando los errores. Al final fue porque se cargo el XML incorrecto, tenia Telefeno y telefono, esa diferencia en la primer letra generaba el error por un null pues la columna Telefono en Persona no acepta null.

Se prosiguió con el SP de simulación en la parte de crear las Movimiento, al final no se utiliza pues genera errores por un mapeo incorrecto de las FK.

Luego se intento de nuevo con el Trigger, se usaron de fuente:

https://codingsight.com/sql-server-triggers-understanding-alternatives/#:~:text=SQL%20Server%20DML%20Triggers%20are,database%20tables'%20content%20or%20views.

Al principio el Trigger que se debía activar al crear una CuentaAhorro no se activa, se desconoce porque. Despues se creo otro Trigger siguiendo la documentación de Microsoft: 

https://docs.microsoft.com/en-us/sql/relational-databases/triggers/create-dml-triggers?view=sql-server-ver15

Y ya el trigger se activaba al crear la cuenta.

Se probó en el SP de simulación, este por los datos del XML crea 10 cuentas, por lo tanto el trigger se debería activar 10 veces y crear 10 Estados de Cuenta, pero al final crea solo 4.

Se cree que el Trigger se activa una vez por cada nodo de FechaOperacionen el XML, puesto que son 4 nodos de fecha. Y siempre el Estado de Cuenta que crea el Trigger es el que correponde a la ultima Cuenta Ahorro de cada nodo de FechaOperacion.

El codigo del Trigger es el siguiente: 

/****** Object:  Trigger [dbo].[Trigger_Test]    Script Date: 27/11/2020 18:34:48 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER TRIGGER [dbo].[Trigger_Test] 

   ON  [dbo].[CuentaAhorro] 

   AFTER INSERT

AS 

BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

DECLARE @IdCuentaAhorro INT,

@FechaInicial DATE,

@FechaFin DATE

SELECT TOP 1 @IdCuentaAhorro = inserted.ID,

@FechaInicial = inserted.FechaCreacion

FROM inserted

SET @FechaFin = DATEADD (month, 1, @FechaInicial)

SET @FechaFin = DATEADD (day, -1, @FechaFin)

    INSERT INTO EstadoCuenta

VALUES (

@IdCuentaAhorro,

@FechaInicial,

@FechaFin,

0,

0

)

END

Comentarios

Entradas populares de este blog

Corrección SPCierreEstado