none
Ayuda con un Trigger RRS feed

  • Pregunta

  • Buenas amigos, Tengo un pequeño inconveniente que no he logrado hacer que me funcione un trigger en MYSQL.

    Lo que quiero que pase es que cuando le inserto un query en mi tabla producto, la cantidad que voy a vender me reste al Stock disponible. Intente hacer entre varios posts que he visitado pero no he logrado que me funcione, alguien tendra un ejemplo o algo que me pueda ayudar a hacerlo?

    gracias

    domingo, 1 de octubre de 2017 10:10

Respuestas

  • No te puedo dar una solución para el trigger porque lo pides para MySql (y este es el foro de SQl Server), pero sí te puedo hacer una recomendación: si estás a tiempo, cambia el diseño de la base de datos. Es preferible que esté normalizado, en lugar de denormalizarlo de esa manera. Esto quiere decir que no se guarda directamente el stock y se decrementa con las ventas o se incrementa con las compras, sino que se hace una vista que haga un "...SUM(cantidad) ... GROUP BY producto" a partir de las tablas de compras y ventas, y eso te arroja el stock sin ningún riesgo de que se "desincronice" el stock de la tabla de productos con las compras o ventas.

    En una base de datos "normalita", esto funciona perfectamente de manera casi instantánea. Únicamente si tuvieses millones de filas en las tablas de compras y ventas puede ser que se volviese lento el hacer ese "SUM". En estos casos, la primera medida sería indexar la vista (en SQL Server, no sé si en MySql se pueden indexar). Si aún así siguiera sin tener suficiente rendimiento, entonces es cuando pensaríamos en denormalizar la base de datos y guardar un acumulado de Stock ajustado mediante triggers. Pero esta necesidad se tiene que demostrar y justificar, no es buena idea hacer de entrada un diseño denormalizado solo que "por si acaso".

    domingo, 1 de octubre de 2017 10:47