Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Deshacer insert, update, delete?

Estas en el tema de Deshacer insert, update, delete? en el foro de PostgreSQL en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 11/03/2008, 13:47
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo 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
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #2 (permalink)  
Antiguo 11/03/2008, 15:30
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
Re: Deshacer insert, update, delete?

Quizas te refieres a las transacciones
BEGIN, COMMIT, ROLLBACK, SET TRANSACTION

Por aca en spanish
  #3 (permalink)  
Antiguo 11/03/2008, 15:48
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo 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?? Rollback?? pero no sè si estoy bien.

Gracias de antemano
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #4 (permalink)  
Antiguo 11/03/2008, 16:12
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
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
  #5 (permalink)  
Antiguo 11/03/2008, 16:35
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
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
  #6 (permalink)  
Antiguo 12/03/2008, 04:12
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
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
  #7 (permalink)  
Antiguo 13/03/2008, 11:52
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo Re: Deshacer insert, update, delete?

Hola a todos de nuevo...

Sergestux, seyko muchas gracias por sus respuestas y aclaraciones

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 Disculpas por la molestia y de nuevo gracias

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #8 (permalink)  
Antiguo 13/03/2008, 12:57
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
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).
  #9 (permalink)  
Antiguo 14/03/2008, 03:30
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
Re: Deshacer insert, update, delete?

Segestux de donde sacaste la cita en español?
  #10 (permalink)  
Antiguo 14/03/2008, 07:11
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo Re: Deshacer insert, update, delete?

Sergestux, gracias por tu respuesta Intentarè leer un poco mas y cualquier les pregunto vale?

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

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #11 (permalink)  
Antiguo 14/03/2008, 07:44
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
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
  #12 (permalink)  
Antiguo 14/03/2008, 11:10
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Re: Deshacer insert, update, delete?

Y eso que quiere decir seyko
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #13 (permalink)  
Antiguo 14/03/2008, 12:35
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
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).

Última edición por Sergestux; 14/03/2008 a las 12:39 Razón: Agregue la traduccion
  #14 (permalink)  
Antiguo 18/03/2008, 05:41
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 2 meses
Puntos: 13
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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:17.