Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Trigger Actualizar 2 tablas

Estas en el tema de Trigger Actualizar 2 tablas en el foro de Mysql en Foros del Web. Lo que quiero hacer es al insertar 1 o mas registros en la tabla ventas que automaticamente me reste la tabla articulos. Eso me sale ...
  #1 (permalink)  
Antiguo 21/07/2011, 09:38
Avatar de arielenter  
Fecha de Ingreso: abril-2009
Mensajes: 75
Antigüedad: 15 años, 7 meses
Puntos: 2
Pregunta Trigger Actualizar 2 tablas

Lo que quiero hacer es al insertar 1 o mas registros en la tabla ventas que automaticamente me reste la tabla articulos. Eso me sale con este trigger sin problema.

Código:
DELIMITER $$

DROP TRIGGER control_hotel.actualizar_stock_venta$$

CREATE
    TRIGGER actualizar_stock_venta AFTER INSERT ON ventas 
    FOR EACH ROW BEGIN 
 UPDATE articulos
SET stock=stock-new.cantidad
WHERE codigo=new.codarticulo;
END;
$$

DELIMITER ;
Ahora quiero que al insertar los registro en ventas que una tabla me actualice solo 1 registro. La tabla se se compone asi:

nombre de la tabla: nfactura
campo: numero

la tabla nfactura tengo mi numero de factura que es un tipo contador.
  #2 (permalink)  
Antiguo 21/07/2011, 10:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Trigger Actualizar 2 tablas

No se puede definir más de un trigger para cada evento de la tabla, por lo que si ya has definido el que muestras, tienes que meter ese UPDATE en el mismo trigger.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 21/07/2011, 11:05
Avatar de arielenter  
Fecha de Ingreso: abril-2009
Mensajes: 75
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Trigger Actualizar 2 tablas

Pero que pasa si inserto mas de 1 registro en la tabla ventas. Si en la tabla nfactura.numero tengo el valor= 10 yo a este 10 solo quiero sumarle +1.
  #4 (permalink)  
Antiguo 21/07/2011, 11:10
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Trigger Actualizar 2 tablas

El trigger no ejecuta la rutina en forma grupal. Se ejecuta una vez por cada registro que se procesa. El que le tires a la tabla 100.000 registros en un insert masivo a MySQL no le importa; en ese caso ejecutará esa rutina 100.000 veces.
Esa es precisamente una de las razones por las que se debe tener cuidado en no recargar al sistema de tareas inútiles. Si lo haces, lo pagas con performance.
En tu caso la duda que queda es que si vas a usar un valor incremental en 1 en una ID, ¿para qué usas otra tabla como auditora? ¿Por qué no usar un auto_increment?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: factura, numero, trigger
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:39.