From: | Jorge Lopez <jorge(dot)lopez(at)todotupc(dot)com(dot)mx> |
---|---|
To: | Magnvs -- Carles Querol <magnvsctv(at)hotmail(dot)com> |
Cc: | pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx |
Subject: | Re: [Pgsql-ayuda] transacciones |
Date: | 2003-09-15 18:51:13 |
Message-ID: | 3F660A21.1080702@todotupc.com.mx |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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(at)hotmail(dot)com
> carquesa(at)eui(dot)upv(dot)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(at)tlali(dot)iztacala(dot)unam(dot)mx
> http://tlali.iztacala.unam.mx/mailman/listinfo/pgsql-ayuda
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2003-09-15 18:57:24 | Re: [Pgsql-ayuda] traduccion de mensajes del backend |
Previous Message | Martin Marques | 2003-09-15 18:43:05 | Re: Off- topic : [Pgsql-ayuda] alguien tiene virus! |