Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/12/2014, 10:47
oscurogt
 
Fecha de Ingreso: agosto-2013
Ubicación: Guatemala
Mensajes: 137
Antigüedad: 10 años, 8 meses
Puntos: 4
Respuesta: Actualizar por medio de disparador (trigger)

Cita:
Iniciado por replica Ver Mensaje
Una pregunta: ¿cuál es el propósito principal de uso de un trigger?

Es que tengo una pregunta parecida a la de oscurogt. En mi caso, cuando hago una venta, al insertar en la tabla "linea_pago", quiero descontar la cantidad de la tabla "articulo", haciendo un update en la fila del artículo en cuestión.

Y quería preguntar si debo programarlo en php, que es donde estoy haciendo la aplicación, o es una buena práctica el hacerlo con un trigger.

Ya sé que para las auditorías el trigger es idóneo, pero no sé si aplica en algún caso más.

Gracias, y espero que a oscurogt no le moleste mucho que ocupe su hilo.
No me molesta para nada que uses mi Hilo, la verdad para eso pregunto y trato de solucionar lo que pregunto para que los demás puedan solucionar problemas similares, en cuanto a tu pregunta es mejor usar un trigger (disparador) para hacer la funcion que deseas, es mas seguro y confiable ya que puede programar desde la base de datos sin tener que alterar tu codigo fuente cada vez que necesites modificar algo.

tengo uno que hace lo que necesitas es este.
Código MySQL:
Ver original
  1. CREATE DEFINER=`root`@`localhost` TRIGGER `salidas_ventas` AFTER INSERT ON `sys_venta_detalle` FOR EACH ROW BEGIN
  2.         update sys_productos set existencia = existencia - new.cantidad where idproducto = new.idproducto;
  3.         insert into sys_kardex (no_movimiento,idproducto,cantp,cantidad,tipo,idmovimiento,sysdate)
  4.         values (new.no_venta,new.idproducto,new.cantidad,new.cantidad,'-1',new.idmovimiento,cast(date_format(new.sysdate,'%Y-%m-%d')AS CHAR));
  5.  END