Re: Dudas con respecto a functions

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Carlos Eduardo <ceal(dot)educar(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Dudas con respecto a functions
Date: 2005-08-11 14:31:45
Message-ID: 20050811143145.GA19103@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Thu, Aug 11, 2005 at 09:47:41AM -0400, Carlos Eduardo wrote:

> Estoy empezando una Aplicación en la que el trabajo con la base de
> datos es un tanto delicado. Mi experiencia real en programación con
> Base de Datos es con PL/SQL en DB2. Y en los procedimientos
> almacenados yo podia manejar transacciones. Ahora mi inquietud es con
> respecto a las funciones de PL/pgSQL, tambien pueden manejar
> transacciones???

Todo en Postgres sucede dentro de una transaccion, ya sea explicitamente
(porque le das BEGIN/COMMIT) o bien implicitamente (ejecutar un comando
"aislado" abre una transaccion, ejecuta y luego la cierra). Una funcion
se ejecuta dentro de exactamente una transaccion -- no puedes
comprometerla en la mitad y continuar la mitad con otra, asi como
tampoco puedes ejecutar una funcion fuera de una transaccion. La misma
API para funciones (SPI) prohibe el uso de BEGIN, COMMIT y demas
llamadas SQL de control de transacciones.

En PL/pgSQL puedes usar EXCEPTIONS, lo cual automaticamente crea
SAVEPOINTs aplicables al bloque BEGIN/END donde se definen. Eso te da
control sobre cada parte de la funcion, pudiendo hacer rollback de un
bloque en particular y continuar con el resto de la ejecucion de la
funcion.

--
Alvaro Herrera (<alvherre[a]alvh.no-ip.org>)
"La naturaleza, tan frágil, tan expuesta a la muerte... y tan viva"

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jairo Sánchez 2005-08-11 15:09:05 Re: No arranca el servidor de Postgre
Previous Message Edwin Quijada 2005-08-11 14:30:52 RE: Dudas con respecto a functions