Ver Mensaje Individual
  #7 (permalink)  
Antiguo 29/03/2014, 18:15
davidc_10
 
Fecha de Ingreso: noviembre-2010
Mensajes: 13
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Uso de Old en un Trigger

Hola "gnzsoloyo" pues te comento que la sentencia la puse con la finalidad de no ingresar datos repetidos mi tabla detalle_lote, por ello lo que pretendo con la variable numero es asignarle a estar el conteo (count (*)) de todos los registros que tienen el mismo numero de lote y numero de producto para que en caso ya exista uno, solo se actualice, de lo contrario se inserte uno nuevo, te adjunto nuevamente el codigo:

DELIMITER $$

USE Farmacia $$

CREATE TRIGGER TgComprasAg AFTER INSERT ON Detalle_Compra
FOR EACH ROW
BEGIN
DECLARE Numero INT;

SELECT COUNT(*) INTO Numero FROM Detalle_Lote WHERE IdLote=NEW.idLote AND IdProducto=NEW.Id_Producto;
IF Numero>0 THEN
UPDATE Inventario SET Existencia=Existencia+NEW.Cantidad WHERE idProducto=NEW.Id_Producto;
INSERT INTO Movimientos (idTipoMov,IdProducto,Fecha,Cantidad) VALUES (2,NEW.Id_Producto,Now(),NEW.Cantidad);
ELSEIF Numero=0 THEN
UPDATE Inventario SET Existencia=Existencia+NEW.Cantidad WHERE idProducto=NEW.Id_Producto;
INSERT INTO Detalle_Lote(IdProducto,IdLote,Fechaingreso) VALUES (NEW.Id_Producto,NEW.idLote,Now());
INSERT INTO Movimientos (idTipoMov,IdProducto,Fecha,Cantidad) VALUES (2,NEW.Id_Producto,Now(),NEW.Cantidad);
END IF;

END;
$$

DELIMITER;

No se si estoy poniendo mal la condicion, pero lo que pretendo con ella es verificar si numero es mayor que 0, quiere decir que ya existe un registro con los datos que estoy ingresando y solo actualizo tabla inventario de lo contrario si es igual a 0, aparte de actualizarme la tabla que me inserte un nuevo registro en detalle_lote.

Te agradecere mucho tu ayuda.