Hola, buen día
Estoy intentando usar transacciones en una función:
CREATE OR REPLACE FUNCTION "public"."fx_hacer_entrada_por_concepto" (in
int4, in float8, in int4) RETURNS bool AS
$BODY$
DECLARE
id_usuario ALIAS FOR $1;
id_concepto ALIAS FOR $3;
cant ALIAS FOR $2;
id_caja INT;
id_ticket INT;
BEGIN
SAVEPOINT rescate;
id_caja := nextval('caja_caja_id_seq'::regclass);
id_ticket :=
nextval('entradas_por_concepto_entrada_por_concepto_id_seq'::regclass);
INSERT INTO caja VALUES (id_caja, id_ticket, cant, true);
IF NOT FOUND THEN
ROLLBACK TO rescate;
RETURN FALSE;
END IF;
INSERT INTO entradas_por_concepto VALUES (id_ticket, id_concepto);
INSERT INTO transacciones (transaccion_id, caja_id, usuario_id,
tipo_de_transaccion_id, registro_id, fecha_hora) VALUES (DEFAULT,
id_caja, id_usuario, 2, id_ticket, CURRENT_TIMESTAMP);
COMMIT;
RETURN TRUE;
END
$BODY$
LANGUAGE 'plpgsql'
Pero al llamarla:
select fx_hacer_entrada_por_concepto(1, 10000, 1);
Obtengo un error:
>[Error] Script lines: 1-3 --------------------------
ERROR: SPI_execute_plan failed executing query "SAVEPOINT rescate":
SPI_ERROR_TRANSACTION
Line: 1
Alguna idea? Desde ya muchas gracias.
Saluos!
--
TIP 1: para suscribirte y desuscribirte, visita
http://archives.postgresql.org/pgsql-es-ayuda