Problema con commits y rollbacks en funciones

From: Leonardo Garcia <go2leonardo(at)yahoo(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Problema con commits y rollbacks en funciones
Date: 2007-04-28 00:02:38
Message-ID: 703152.42497.qm@web38807.mail.mud.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola a todos y Buenas Tardes.

Actualmente estoy investigando sobre los commits en funciones de postgres y he encontrado algunos problemas, me gustaría contar con alguna manera de realizar commit dentro de funciones plpgsql pero no lo he logrado, según he leido en los archivos de la lista ésto no es posible.
Me gustaría saber si alguno me puede dar una sugerencia para abordar este problema, tengo una función que realiza el llenado de una tabla y requiero que el mismo si es interrumpido por alguna causa sea guardado en la tabla hasta donde pudo llegar sin hacer rollback de la transacción.
He estado probando algunas variaciones del siguiente script:


CREATE TABLE prueba
(
numero numeric(10) NOT NULL DEFAULT 0,
"Descripcion" varchar(40),
CONSTRAINT prueba_pk PRIMARY KEY (numero)
)
WITHOUT OIDS;

CREATE OR REPLACE FUNCTION llena_prueba(comienza bool)
RETURNS text AS
$BODY$
DECLARE
ultimo numeric;
BEGIN
ultimo=0;
SET search_path = public, pg_catalog;
SELECT COALESCE(MAX(prueba.numero),1) INTO ultimo from prueba;
FOR i IN ultimo..10000000 LOOP
BEGIN
INSERT INTO prueba values(i,'PRUEBA '||i);
EXCEPTION WHEN others THEN
-- NADA
RETURN 'termino';
END;
IF MOD(i,100)=0 THEN
RAISE NOTICE 'INSERTADOS %',i;
END IF;
END LOOP;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;


Luego invoco la función con:

select llena_prueba(true);

Esta función está programada para conseguir el último valor insertado en la tabla y continuar con el próximo hasta llegar a 10 millones de filas.
El problema es que si cancelo la ejecución del script luego de haber insertado unos cientos de filas, se realiza automáticamente el rollback y no se conservan las filas ya insertadas.
¿Sabe alguno de Uds. como podría lograr conservar los cambios aunque se cancele la ejecución?
Agradezco cualquier sugerencia.

Agradeciendo de antemano su excelente ayuda se despide.

Atte.

Leonardo García.
Los Teques-Venezuela.
__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message usuario anonimo 2007-04-28 01:20:11 Re: postgresql-common con 8.2.4
Previous Message Alejandro Gasca 2007-04-27 23:12:30 postgresql-common con 8.2.4