Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PostgreSQL (http://www.forosdelweb.com/f99/)
-   -   Deshacer insert, update, delete? (http://www.forosdelweb.com/f99/deshacer-insert-update-delete-565040/)

Carxl 11/03/2008 13:47

Deshacer insert, update, delete?
 
Hola a todos, cómo van??

Pues tengo una pregunta creo que en general para Bases de datos, pero como la necesito para Postgres, entonces la hago acà.... disculpas sino.

Postgres me permite devolver un insert?? un delete? o un update? Osea hay alguna forma de "rollback" en Base de datos?? Deshacer algun tipo de acción??

No sé si estaré preguntando una bobada, pero es que no tengo la verdad no sè.

Muchas gracias de antemano por las respuestas...

Saludos:adios:

Sergestux 11/03/2008 15:30

Re: Deshacer insert, update, delete?
 
Quizas te refieres a las transacciones
BEGIN, COMMIT, ROLLBACK, SET TRANSACTION

Por aca en spanish

Carxl 11/03/2008 15:48

Re: Deshacer insert, update, delete?
 
Hola Sergestux, gracias por responder

Leì los links que me pasaste, pero no logro aclarar mi duda... Si ya hice un update, con cual de estas instrucciones que me pasaste, logro deshacer esa transacción??:neurotico Rollback?? pero no sè si estoy bien.

Gracias de antemano:adios:

Sergestux 11/03/2008 16:12

Re: Deshacer insert, update, delete?
 
Exactamente con rollback
Esto es lo que hago en php
Código PHP:

        pg_query$conexion,  'BEGIN;');            //Inicio la Transaccion
        
$SQL="UPDATE ....;";
        
$resultado pg_query$conexion,  $SQL);   //Por si quieres evaluar el resultado
        
pg_query$conexion,  'COMMIT;');            //Comprometo la Transaccion 

Si hay alguna falla en el update, no se ejecuta el commit y automaticamente se ejecuta el rollback, aunque tambien puedes hacerl explicitamente

Sergestux 11/03/2008 16:35

Re: Deshacer insert, update, delete?
 
Sorry por contestarte tan apresurado, pero andaba yo almorzando.
Este podria ser un ejemplo mas claro:
Código PHP:

select from empleados;
BEGIN;
UPDATE empleados SET nombre='';
DELETE FROM empleados;
/*Cualquier otra sentencia (UPDATE, INSERT, DELETE...)*/
...
ROLLBACK;
select from empleados

Al final no se haria ninguna modificacion y la tabla daria el mismo resultado al principio y al final

seyko 12/03/2008 04:12

Re: Deshacer insert, update, delete?
 
carlx, como te indica Sergestux, puedes hacer un rollback dentro de cualquier transación siempre y cuando no se haya hecho el commit.

Una vez realizado el commit no puedes deshacer una transacion en postgres (que yo sepa).

Un saludo

Carxl 13/03/2008 11:52

Re: Deshacer insert, update, delete?
 
Hola a todos de nuevo...

Sergestux, seyko muchas gracias por sus respuestas y aclaraciones:arriba:

Sergestux, tu ejemplo me ayudò para entender la sintaxis y como apliacarla, pero me ha quedado una duda... Osea que la funciòn del rollback si yo la coloco explicitamente, me devuelve esa transacción, la deshace??? Y si no la coloco pero hubo un error?? Y lo del commit, cual es la ventaja, desventaja??

Me podrìan aclarar un poco mas por favor??, creo que mis preguntas son mas teòricas que pràcticas :neurotico:neurotico Disculpas por la molestia y de nuevo gracias:si:

Saludos:adios:

Sergestux 13/03/2008 12:57

Re: Deshacer insert, update, delete?
 
El COMMIT es cuando quieres 'comprometer' la transaccion o sea que si pones un comit puedes estar seguro que tus sentencias incluidas en la transaccion se efectuaron correctamente, en caso de haber un error el postgres te mandaria un mensaje de error (haria un rollback automatico) y no se haria ningun cambio, si utilizas el ROLLBACK, no te mandaria ningun mensaje de error y tampoco hiciera ningun cambio.

Pero esto es asi por esto:
Cita:

Por defecto, PostgreSQL ejecuta las transacciones en modo no encadenado (tambien conocido como "autocommit" en otros sistemas de base de datos). En otras palabras, cada estado de usuario es ejecutado en su propia transaccion y un commit se ejecuta implicitamente al final del estatuto (si la ejecucion fue exitosa, de otro modo se ejecuta un rollback).

seyko 14/03/2008 03:30

Re: Deshacer insert, update, delete?
 
Segestux de donde sacaste la cita en español?

Carxl 14/03/2008 07:11

Re: Deshacer insert, update, delete?
 
Sergestux, gracias por tu respuesta:arriba: Intentarè leer un poco mas y cualquier les pregunto vale?

De acá seyko, en la parte que dice: "Descripción".

Saludos:adios:

seyko 14/03/2008 07:44

Re: Deshacer insert, update, delete?
 
uff eso me temia ya que casi no hay documentación en español.
Esa pagina habla de la versión 6.5... las cosas han cambiado mucho desde entonces!

Salu2

Carxl 14/03/2008 11:10

Re: Deshacer insert, update, delete?
 
Y eso que quiere decir seyko:neurotico:neurotico:neurotico

Sergestux 14/03/2008 12:35

Re: Deshacer insert, update, delete?
 
Pues aca (aunque en ingles) dice lo mismo y es sobre la version 8.3
Cita:

By default (without BEGIN), PostgreSQL executes transactions in "autocommit" mode, that is, each statement is executed in its own transaction and a commit is implicitly performed at the end of the statement (if execution was successful, otherwise a rollback is done).
Intento de traduccion:

Cita:

Por default (sin BEGIN), PostgreSQL ejecuta transacciones en modo "autocommit", esto es, cada sentencia es ejecutada en su propia transaccion y un commit es implicitamente ejecutado al final de la sentencia (si la ejecucion fue exitosa, de otro modo se hace un roll back).

seyko 18/03/2008 05:41

Re: Deshacer insert, update, delete?
 
Creo que no me hice entender, no queria decir que fuera incorrecto, solo que tengais en cuenta que esa traducción es de una version muy antigua y que las cosas han cambiado mucho.

Salu2


La zona horaria es GMT -6. Ahora son las 21:38.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.