SQL - error al crear un trigger

 
Vista:

error al crear un trigger

Publicado por ROBERTO (4 intervenciones) el 23/07/2019 23:33:06
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
USE facturacion;
DELIMITER $$
create or REPLACE
TRIGGER ACTUALIZA_CUOTAS_IVA_AI_O_AU
after INSERT
ON factura_detalle
for EACH ROW
BEGIN
 SELECT iva as ivaprod,porc as porceniva, productos.id from productos JOIN tiposiva on productos.iva = tiposiva.id where productos.id = new.id_producto ;
-- SELECT iva ivaprod from productos where id = new.id_producto
-- SELECT porc porceniva from tiposiva where id = ivaprod
 
IF EXISTS (SELECT id,tipo FROM cuotasiva WHERE id=new.id_factura and tipo = ivaprod) THEN
    UPDATE cuotasiva SET importe = importe + (new.subtotal * 1-(porceniva/100))
    WHERE id = new.id_factura and tipo = ivaprod;
ELSE
    INSERT INTO cuotasiva VALUES ('new.id_factura','ivaprod','new.subtotal * 1-(porceniva/100)');
END
$$

Hola este es mi disparador . Me da errores de sintaxis que no logro corregir.
Lo que quiero es que despues de insertar un registro de detalle en mi facturacion que inserte o actualice la cuota de iva correspondiente que se guarda en la tabla cuotasiva.Para ello antes de hacer el update o insert busco el tipo de iva del producto que contiene el detalle(porc) para utilizarlo despues en el update o el insert.
Gracias.
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

error al crear un trigger

Publicado por ROBERTO (4 intervenciones) el 24/07/2019 00:16:10
Este seria mi SQL. El otro no estaba completo. Ahora me da errores en los DECLARE tambien.


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
USE facturacion;
DELIMITER $$
create or REPLACE
TRIGGER ACTUALIZA_CUOTAS_IVA_AI_O_AU
after INSERT
ON factura_detalle
for EACH ROW
BEGIN
DECLARE nuevoiva float DEFAULT 0;
DECLARE ivaprod int;
DECLARE porceniva int;
 
 SELECT iva INTO ivaprod,porc INTO porceniva, productos.id from productos JOIN tiposiva on productos.iva = tiposiva.id where productos.id = new.id_producto ;
-- SELECT iva ivaprod from productos where id = new.id_producto
-- SELECT porc porceniva from tiposiva where id = ivaprod
 
nuevoiva = new.subtotal * 1-(porceniva/100));
 
IF EXISTS (SELECT id,tipo FROM cuotasiva WHERE id=new.id_factura and tipo = ivaprod) THEN
    UPDATE cuotasiva SET importe = importe + (new.subtotal * nuevoiva)
    WHERE id = new.id_factura and tipo = ivaprod;
ELSE
    INSERT INTO cuotasiva VALUES ('new.id_factura','ivaprod','new.subtotal * nuevoiva');
END
$$
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar