El mar, 16-02-2010 a las 11:31 -0600, Jorge Jacques escribió:
> 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.
>
No se puede.
--
Saludos,
Gilberto Castillo
Edificio Beijing. Miramar Trade Center. Etecsa.
Miramar, La Haban.Cuba.
---
This message was processed by Kaspersky Mail Gateway 5.6.28/RELEASE running at
host imx2.etecsa.cu
Visit our web-site: <http://www.kaspersky.com>, <http://www.viruslist.com>
--
TIP 7: no olvides aumentar la configuración del "free space map"