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

Uso de la Instruccion Begin

Estas en el tema de Uso de la Instruccion Begin en el foro de PostgreSQL en Foros del Web. Hola amigos, Estoy trabajando con postgres y php, Necesito que me escriban un ejemplo del uso de la instruccion BEGIN por ejemplo cuando estoy ingresando ...
  #1 (permalink)  
Antiguo 23/09/2010, 23:42
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 13 años, 7 meses
Puntos: 0
Uso de la Instruccion Begin

Hola amigos,

Estoy trabajando con postgres y php,

Necesito que me escriban un ejemplo del uso de la instruccion BEGIN por ejemplo cuando estoy ingresando un registro desde php a la base de datos postgres, mi objetivo es mantener la integridad de la información por caidadas de luz principalmente.

No tengo mucho tiempo y debo entregar una aplicación posteriormente averiguo mas por los manuales.


Gracias anticipadas.
  #2 (permalink)  
Antiguo 23/09/2010, 23:55
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Uso de la Instruccion Begin

hmmm...

en primer lugar este foro es de PHP, y tu problema es de base datos... ¿nada que ver cierto?

aunque bueno, en esencia la instrucción BEGIN como bien significa, es el inicio de un grupo de sentencias... que, si todo va bien entonces debe finalizarse dicho grupo con un COMMIT para registrarse con éxito los cambios...

en caso contrario debes ejecutar un ROLLBACK para deshacer los cambios hechos a partir de la instrucción BEGIN anterior, si no me equivoco así es como funciona...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 24/09/2010, 01:46
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Uso de la Instruccion Begin

Este tema no es de este foro pero te cuento cómo funciona.
Cuando haces BEGIN las siguientes operaciones no se haránefectivas en la DB hasta que hagas un COMMIT.
Si no haces COMMIT por corte de luz o por lo que sea, todo lo que has hecho hasta ese momento no se aplica. El ROLLBACK es implícito pero puedes ejecutarlo tú:

1. BEGIN
UPDATE, INSERT, ETC...
COMMIT

Todas las operaciones se han confirmado, no se puede deshacer

2. BEGIN
UPDATE, INSERT, ETC...
ROLLBACK

Se han deshecho los cambios, no ha pasado nada

2. BEGIN
UPDATE, INSERT, ETC...
------------ Corte de corriente y pérdida de conexión, ROLLBACK implicito.

Se han deshecho los cambios, no ha pasado nada. LO mismo que en el caso anterior.



Has de tener en cuenta que una vez hecho BEGIN las operaciones que hagas no serán visibles para otros usuarios hasta que no hagas COMMIT.
Otra cosa: una vez hecho COMMIT los cambios no se pueden deshacer, no puedes llamar a ROLLBACK.

En cualquier caso es recomendable que mires la documentacion de Posgres porque puede haber ligeras variaciones en cuanto a funcionamiento.

sALUDOS
  #4 (permalink)  
Antiguo 24/09/2010, 09:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Tema movido desde PHP a PostgreSQL
  #5 (permalink)  
Antiguo 24/09/2010, 09:41
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Uso de la Instruccion Begin

Como consejo adicional a las buenas respuestas que has recibido. Puedes controlar la inserción de datos desde una función. Las funciones tienen implicitas toda la teoría de transacciones y se comportan como una sola ejecución.
En palabras mas claras... si en el momento en que se está ejecutando una función hay un corte de luz, los cambios que haya podido hacer esta función serán deshechos (Rollback implicito como lo menciona repara2. Si termina la función, automáticamente quedan confirmados.

De esta forma no te matas la cabeza ejecutando sentencias begin en codigo php.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: instruccion
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 04:31.