duda con commit y rollback

17/01/2008 - 09:44 por Vicente García | Informe spam
Hola a todos,

Estoy haciendo una aplicación en la que antes de confirmar una acción hago
muchos accesos a la base de datos y no hago el COMMIT hasta que el usuario
acepta la operación pero me gustaría saber si hay alguna forma de
recuperarse al estado anterior después de haber hecho el COMMIT porque hago
muchas modificaciones en la base de datos en cada COMMIT y quiero
implementar una opción que sería algo así como "deshacer cambio".

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Jesús López
17/01/2008 - 12:08 | Informe spam
Pues no, después del COMMIT ya no hay manera de deshacer. Para volver al
estado anterior tendrías que hacer una transacción de compensación, es decir
una nueva transacción que dejara la base de datos en el estado anterior.

Por otra parte dices "no hago el COMMIT hasta que el usuario acepta la
operación". ¿Quieres decir que el usuario controla cuando empieza y termina
la transacción? ¿es posible que el usuario pueda empezar una transacción,
irse a tomarse algo, volver al cabo de dos horas y luego confirmar la
transacción?

En general es muy mala práctica dejar la duración de las transacciones bajo
control del usuario. Las transacciones deberían durar lo mínimo posible y si
lo dejas bajo el control del usuario pueden durar horas...

Saludos:

Jesús López
www.solidq.com



"Vicente García" escribió en el mensaje
news:
Hola a todos,

Estoy haciendo una aplicación en la que antes de confirmar una acción hago
muchos accesos a la base de datos y no hago el COMMIT hasta que el usuario
acepta la operación pero me gustaría saber si hay alguna forma de
recuperarse al estado anterior después de haber hecho el COMMIT porque
hago muchas modificaciones en la base de datos en cada COMMIT y quiero
implementar una opción que sería algo así como "deshacer cambio".

Muchas gracias.
Respuesta Responder a este mensaje
#2 Maxi
17/01/2008 - 17:12 | Informe spam
Hola, coincido plenamente con lo dicho por JEsus, de hecho en varios
clientes he visto esto con lo cual genera bloqueos terribles y hace que las
aplicaciones sean lentas, hasta pudiendo generar interbloqueos


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Jesús López" escribió en el
mensaje news:
Pues no, después del COMMIT ya no hay manera de deshacer. Para volver al
estado anterior tendrías que hacer una transacción de compensación, es
decir una nueva transacción que dejara la base de datos en el estado
anterior.

Por otra parte dices "no hago el COMMIT hasta que el usuario acepta la
operación". ¿Quieres decir que el usuario controla cuando empieza y
termina la transacción? ¿es posible que el usuario pueda empezar una
transacción, irse a tomarse algo, volver al cabo de dos horas y luego
confirmar la transacción?

En general es muy mala práctica dejar la duración de las transacciones
bajo control del usuario. Las transacciones deberían durar lo mínimo
posible y si lo dejas bajo el control del usuario pueden durar horas...

Saludos:

Jesús López
www.solidq.com



"Vicente García" escribió en el mensaje
news:
Hola a todos,

Estoy haciendo una aplicación en la que antes de confirmar una acción
hago muchos accesos a la base de datos y no hago el COMMIT hasta que el
usuario acepta la operación pero me gustaría saber si hay alguna forma de
recuperarse al estado anterior después de haber hecho el COMMIT porque
hago muchas modificaciones en la base de datos en cada COMMIT y quiero
implementar una opción que sería algo así como "deshacer cambio".

Muchas gracias.




Respuesta Responder a este mensaje
#3 Vicente García
18/01/2008 - 08:28 | Informe spam
Muchas gracias Jesús y Maxi,

Pero es que es una situación en la que los clientes trabajan con una
terminal sobre una base de datos pero como mucho habrá 10 - 15 clientes
trabajando con ella, ¿creéis que podrían darse problemas así?
Gracias nuevamente,
Un saludo.

"Maxi" escribió en el mensaje de
noticias:
Hola, coincido plenamente con lo dicho por JEsus, de hecho en varios
clientes he visto esto con lo cual genera bloqueos terribles y hace que
las aplicaciones sean lentas, hasta pudiendo generar interbloqueos


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Jesús López" escribió en el
mensaje news:
Pues no, después del COMMIT ya no hay manera de deshacer. Para volver al
estado anterior tendrías que hacer una transacción de compensación, es
decir una nueva transacción que dejara la base de datos en el estado
anterior.

Por otra parte dices "no hago el COMMIT hasta que el usuario acepta la
operación". ¿Quieres decir que el usuario controla cuando empieza y
termina la transacción? ¿es posible que el usuario pueda empezar una
transacción, irse a tomarse algo, volver al cabo de dos horas y luego
confirmar la transacción?

En general es muy mala práctica dejar la duración de las transacciones
bajo control del usuario. Las transacciones deberían durar lo mínimo
posible y si lo dejas bajo el control del usuario pueden durar horas...

Saludos:

Jesús López
www.solidq.com



"Vicente García" escribió en el mensaje
news:
Hola a todos,

Estoy haciendo una aplicación en la que antes de confirmar una acción
hago muchos accesos a la base de datos y no hago el COMMIT hasta que el
usuario acepta la operación pero me gustaría saber si hay alguna forma
de recuperarse al estado anterior después de haber hecho el COMMIT
porque hago muchas modificaciones en la base de datos en cada COMMIT y
quiero implementar una opción que sería algo así como "deshacer cambio".

Muchas gracias.








email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida