Re: [Pgsql-ayuda] Duda con funciones y Transacciones

From: Manuel Rabade <mig(at)mig-29(dot)net>
To: Victor Chavez <vchavezp(at)yahoo(dot)com>
Cc: pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
Subject: Re: [Pgsql-ayuda] Duda con funciones y Transacciones
Date: 2003-11-29 20:13:36
Message-ID: 20031129201336.GA12063@mig-29.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Sat, Nov 29, 2003 at 12:07:24PM -0600, Victor Chavez wrote:
> Hola a todos.
>
> Hace poco empece a desarrollar un sistema teniendo
> como base de datos a PostgreSQL. La funciones de la
> base de datos las estoy haciendo en Pl/PgSql. Todo
> esta muy bien, la base de datos se ha comportado de
> manera rapida y eficiente. La duda que tengo es que en
> una parte de la documentacion de Pl/pgsql dice que las
> funciones no soportan transacciones; si tengo un
> conjunto de instrucciones en una funcion que afectan a
> varias tablas y por alguna razon ya sea de software o
> hardware el proceso se aborta... que ocurre? Por
> definicion una transaccion BEGIN... COMMIT, se hace
> todo el conjunto o no se hace. Que pasa con unae
> funcion si por alguna razon no se llega al final de
> todas sus instrucciones?
>
> Esto es lo que dice la documentacion:
>
> It is important not to confuse the use of BEGIN/END
> for grouping statements in PL/pgSQL with the database
> commands for transaction control. PL/pgSQL's BEGIN/END
> are only for grouping; they do not start or end a
> transaction. Functions and trigger procedures are
> always executed within a transaction established by an
> outer query --- they cannot start or commit
> transactions, since PostgreSQL does not have nested
> transactions.
>
> La parte que dice que las funciones y los triggers son
> ejecutados dentro de una transaccion establecida por
> un a consulta externa... que implica?

En conjunto lo que la documentacion quiere decir es que Postgres no soporta
transacciones anidadas, es decir, no puedes iniciar una transaccion y dentro
de esta transaccion iniciar otra, por eso dentro de los triggers y funciones no
puedes iniciar una transaccion, se supone que debes iniciarla desde el cliente
de postgres, y asi lo que se invoque durante esa transaccion es controlado (tanto
instrucciones sql, funciones, triggers, etc).

Saludos.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Heber Lazcano Camargo 2003-11-29 20:40:05 [Pgsql-ayuda] Cambiar Base de Datos
Previous Message Alvaro Herrera 2003-11-29 19:51:49 Re: [Pgsql-ayuda] Duda con funciones y Transacciones