Avance #26

Avance: Continuando con el desarrollo del SP anterior, fue necesaria la creación de un trigger que registrara los cambios realizado en la tabla Propiedad. Además realizamos el SP GenerarRecibos.

Problemas: Desconocíamos como funcionaban los triggers en SQL Server. Además, tuvimos que investigar como genera un JSON para que fuera almacenado tanto en Antes como en Después. 

Solución: Luego de una investigación exhaustiva entendimos el funcionamiento de los triggers. Básicamente solo es de indicar el tipo de CRUD que lo activa (en nuestro caso INSERT y UPDATE), luego especificar la serie de instrucciones que debe realizar. En este caso solamente era una inserción en la tabla BitácoraCambios, la cual recibía como parámetros alambrados el usuario y el ip (debido a que es una simulación). Asimismo nos tomó tiempo comprender que cuando se activa de forma masiva, lo hace en forma de batches o grupos de 8 elementos. Por lo tanto, ideamos una forma de iterar sobre el batch y ejecutar el insert por cada una de las propiedades. Seguidamente, con el trigger listo, tuvimos que ver como crear un varchar con formato JSON. Afortunadamente, SQL Server tiene la funcionalidad de FOR JSON PATH incorporada lo cual nos facilitó mucho el trabajo. Para la creación del SP GenerarRecibos recibimos como parámetro la fecha de cada iteración en la simulación. Esto debido a que cada uno de los conceptos de cobro poseen un día de cobro. Solamente se revisa si el día actual se tiene que generar cierto tipo de Recibo y posteriormente se les realiza a las propiedades que tengan el concepto de cobro asociado a ella.

Consejos: Los triggers son una poderosa herramienta de automatización en las bases de datos relacionales, su utilización se encuentra muy bien documentada en internet. Se pueden utilizar para muchísimas tareas y simplifican el trabajo de forma significativa. Además, fue muy valioso  aprender sobre el formato JSON y como este es un estándar en la industria. 

Horas: 5 horas

Comentarios

Entradas más populares de este blog

Avance #28

Avance #39

Avance #32