En 1er. lugar, creo que el PRECIO_COMPRA de la tabla COMPUESTOS, no deberia estar, si es q hace referencia al verdadero precio del producto, lo rescatas de la propia tabla y listo, para eso es una base de datos relacional.
2do. No me queda claro como se compone el TOTAL_PRECIO_COMPRA
3ro. en este codigo:
Código SQL
[-]
UPDATE COMPUESTOS
SET PRECIO_COMPRA = :COMPRA
WHERE ID = :IDPRODUCTO;
no deberia igualar con
Código SQL
[-] WHERE IDPRODUCTO = :IDPRODUCTO