[Pgsql-ayuda] Duda con funciones y Transacciones

Victor Chavez vchavezp@yahoo.com
Sat, 29 Nov 2003 12:07:24 -0600 (CST)


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 una
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?

A mi entender, la funcion es una transaccion en si
misma, pero solo quisiera si alguien con mas
experiencia pudiera explicarme si existe en esto el
concepto de que si la funcion termina se hizo todo el
proceso y si algo falla la funcion no hizo nada.




_________________________________________________________
Do You Yahoo!?
La mejor conexión a internet y 25MB extra a tu correo por $100 al mes. http://net.yahoo.com.mx