[Pgsql-ayuda] transacciones

Jorge Lopez jorge.lopez@todotupc.com.mx
Mon, 15 Sep 2003 13:51:13 -0500


Saludos...

De hecho estos terminos son lo que vas  a encontrar en toda transacción 
de postgresql; generalmente cuando se realiza una aplicación para base 
de datos lo que menos importa (cosa que no debería), son las colisiones 
de registros y una forma de evitar esto es a través de transacciones, y 
métodos como BEGIN WORK, ROLLBACK, COMMIT y END te van a auxiliar.

Cabe señalar que en cualquier comando puedes meter una transacción 
aunque lo más común  es usarlo en INSERT y UPDATE.

La tarea principal de ROLLBACK es regresar al ultimo estado de la base 
de datos en caso de que el query falle, con la posibilidad de rectificar.

Ej.
Supongamos que en la tabla nombres nuestro indice va ligado el id_nombre 
y nombre (supongamos...), y ya existe el Nombre 'Jorge', al tratar de 
insertar el siguiente registro el backen de postgres generara un error, 
pues no puede generar un llave duplicada.

BEGIN WORK
INSERT INTO nombres  (nombre,apellido) VALUES ('Jorge','Lopez');
Cannot insert a duplicate key in nombres
ROLLBACK
END

Obviamente, lo que tendriamos que cambiar seria la estructura de nuestra 
base, para que nuestro indice permita un nombre para muchos regitros, 
pero esto dependera del diseñador de la base de datos, y si eres tu 
mismo pues habria que solucionarlo o darle una repasadita al SQL.

Una vez reestructurada la base, vamos a poder meter nuestro registro, 
sin obtener un error al insertarlo, en dicho caso podemos ya generar un 
COMMIT, y seguir con uestra aplicacion.

BEGIN WORK
INSERT INTO nombres  (nombre,apellido) VALUES ('Jorge','Lopez');
COMMIT
END



Magnvs -- Carles Querol wrote:

> Hola a todos,
>
>    Estoy implementando una base de datos en postgre, con un módulo en 
> PHP que extrae datos de un documento XML y genera consultas a partir 
> de estos datos. Lo que me gustaría que álguien me aclarase es la 
> sintaxis de las transacciones, ya que he encontrado muy poco en el 
> Santo Google, y lo que único que he encontrado son definiciones de 
> commit, rollback, etc. Lo que realmente necesito es algún ejemplo... 
> si alguien puede ayudarme...
>
> Grácias de antemano.
>
> P.D.: Podeis refrescarme la memoria y decirme como se buscaban en 
> google los mensajes de esta lista?
>
> Carles Querol
> magnvsctv@hotmail.com
> carquesa@eui.upv.es
>
> Linux Registered User #299843
>
> _________________________________________________________________
> Dale vida a tu correo. Con MSN 8 podrás incluir fotos y textos 
> increibles. http://join.msn.com/?pgmarket=es-es&XAPID=517&DI=1055
>
> _______________________________________________
> Pgsql-ayuda mailing list
> Pgsql-ayuda@tlali.iztacala.unam.mx
> http://tlali.iztacala.unam.mx/mailman/listinfo/pgsql-ayuda
>
>