MariaDB - Error en trigger de MariaDB - No se ejecuta

 
Vista:

Error en trigger de MariaDB - No se ejecuta

Publicado por Ariel Peralta (1 intervención) el 21/12/2020 21:01:36
tengo un trigger de una tabla que deberia dispararse y actualizar o insertar en otra tabla una cantidad, pero no hace nada al momento de que se hace un inserte sobre la tabla que tiene el trigger.

Adjunto los codigos de los triggers:

1. ESTE PROCEDIMIENTO ES LLAMADA POR OTRO PROCEDIMIENTO.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
DELIMITER //
 
   CREATE OR REPLACE PROCEDURE P_ACT_ITEM_DEP_INS_UPD
   (
   IN xIDDEPOSITO INT,
   IN xIDITEM INT,
   IN xCANTIDAD_ENTRADA DOUBLE,
   IN xCANTIDAD_SALIDA DOUBLE
   )
   BEGIN
 
       DECLARE V_REGISTROS INT;
       SELECT COUNT(*) INTO V_REGISTROS FROM item_deposito
       WHERE iditem         = xIDITEM
       AND  iddeposito  = xIDDEPOSITO;
 
       IF V_REGISTROS > 0 THEN
           INSERT INTO item_deposito (iditem, iddeposito, cantidad)
           VALUES(xIDITEM, xIDDEPOSITO, xCANTIDAD_ENTRADA - xCANTIDAD_SALIDA);
       ELSE
           UPDATE item_deposito
           SET cantidad = cantidad + XCANTIDAD_ENTRADA - xCANTIDAD_SALIDA
           WHERE iditem         = xIDITEM
           AND  iddeposito  = xIDDEPOSITO;
       END IF;
 
   END;

2. ESTE PROCEDIMIENTO LLAMA AL PRIMER PROCEDIMIENTO PARA REALIZAR LOS CAMBIOS.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
DELIMITER //
 
   CREATE OR REPLACE PROCEDURE P_ACT_ITEM_DEP
   (
   IN xIDITEM       INT,
   IN xIDVENTA      INT,
   IN xCANTIDAD DOUBLE
   )
   BEGIN
 
       DECLARE V_DEPOSITO INT;
       DECLARE V_CANTIDAD_REGISTROS INT;
       DECLARE V_CANTIDAD_ENTRADA DOUBLE;
       DECLARE V_CANTIDAD_SALIDA DOUBLE;
       DECLARE CURSOR_VENTA CURSOR FOR
       SELECT iddeposito FROM venta WHERE idventa = xIDVENTA;
       DECLARE CONTINUE HANDLER FOR NOT FOUND SET @hecho = TRUE;
 
       OPEN CURSOR_VENTA;
       LOOP_1: LOOP
           FETCH CURSOR_VENTA INTO V_DEPOSITO;
           IF @hecho THEN
              LEAVE LOOP_1;
           END IF;
       END LOOP LOOP_1;
       CLOSE CURSOR_VENTA;
 
       SET V_CANTIDAD_ENTRADA   = 0;
       SET V_CANTIDAD_SALIDA    = xCANTIDAD;
 
       CALL P_ACT_ITEM_DEP_INS_UPD(V_DEPOSITO, xIDITEM, V_CANTIDAD_ENTRADA, V_CANTIDAD_SALIDA);
   END;
 
   //

3. ESTE ES EL TRIGGER QUE LLAMA A LOS PROCEDIMIENTOS Y QUE DEBERIA AFECTAR CUANDO SE REALIZA UN INSERT SOBRE LA TABLA "detalle_venta".

1
2
3
4
5
6
7
8
9
10
11
12
DELIMITER //
 
   CREATE OR REPLACE TRIGGER TR_DETALLE_VENTA_STOCK_INS
   BEFORE INSERT ON detalle_venta
   FOR EACH ROW
   BEGIN
 
       CALL P_ACT_ITEM_DEP(NEW.iditem, NEW.idventa, NEW.cantidad);
 
   END;
 
   //
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder