Se pueden usar Transacciones desde una funcion?

From: Jorge Jacques <jorge(at)eskalonnetwork(dot)com>
To: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Se pueden usar Transacciones desde una funcion?
Date: 2010-02-16 17:31:15
Message-ID: 4B7AD663.2020003@eskalonnetwork.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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!

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gilberto Castillo Martínez 2010-02-16 17:59:40 Re: Se pueden usar Transacciones desde una funcion?
Previous Message Gilberto Castillo Martínez 2010-02-16 17:03:11 Re: Instalar postgres en una ruta especifica con yum en centos