Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   como se manajen las transacciones en maestro/detalle mysql. (https://www.clubdelphi.com/foros/showthread.php?t=30367)

Arturo 04-04-2006 22:06:46

como se manajen las transacciones en maestro/detalle mysql.
 
saludos club,
Tengo una duda de como manejar las transacciones desde delphi, en mi caso debo de usar algunas tablas en maestro/detalle.
Con zeos lo logro usando componentes ztables o zQuery y un Zupdate la cuestion es que al usar transacciones seran anididas por que .- primero comienzo el maester y voy agregando registros a mi detalle y al final puedo grabar los cambio.

Mi pregunta es, insercion en el detalle debo de comenzar una transaccion o en su caso como juega el papel las transacciones alguien podria explicar este detalle:
Start transaccion -Maestro
Start transaccion -detalle
Start transaccion -detalle
commit

gracias

Guerth Castro G 05-04-2006 19:02:17

Creo que podrias intentar con el objeto de zeos que sirve para conectar a la base de datos este tiene un procedimientoo funcion que inicia la transaccion y permite hacer el commit, ademas permite hacer el rollback si se da algun problema, siempre y cuando estes dentro de un try...except..
por cierto algunas verciones de mysql como la 4.1.xx no soportan transacciones segun lei en la pagina oficial la vercion 5.1.0 ya soporta hasta procedimientos almacenados pero no lo he probado aun

Arturo 06-04-2006 22:59:50

bueno, busque un fragmento que menciona el uso del try y exception esto lo obtuve de los componenetes ado:
Código PHP:

Y:integer;
begin
Y
:=Adooneccition.Begintrans;
try
 
hago updatedeleteinsert
 Adooneccition
.committrans;
except
on E
:Exception do Adooneccition.rollbacktrans;
end

mi pregunta es: este codigo en que momento se usa o en que evento del componente lo coloco, se entiende que si agrego un registro de inmediado se graba (committrans) pero si falla algo se deshace el cambio. yo uso botones para indicarle que sea un nuevo registro, modificar y guardar, ahora como le puedo agregar este codigo. para firebird en el evento afterPost puedo hacer esto transaccion.commitTrans;
Pero para ado o seos al usar mysql debemos comenzar la transaccion
me puede ayudar en resolver este misterio gracias. les agradesco

Arturo 08-04-2006 00:08:42

como manejar las transacciones explicitas para mysql
 
hola de nuevo, bueno como manejar las transacciones explicitas, ya que con mysql es el uso que se debe de aplicar.

podrian contestarme si es correcto lo que estoy haciendo, que en cada evento afterpost, onnewrecord, beforeedit, del componente ztable le agrege este codigo:

conexion.start transaction;
try
conexion.commit
except
on E:exception do conexion.Rollback;
end;
Y para el de cancelar afterCAncel: conexion.start transaction;
conexion.rolback;

Hasta ahorita no he encontrado en donde colocar el codigo para indicarle al delphi que voy a empezar una transaccion. Por cierto que los ejemplo explica el bloque con un try.. exception pero no mencionan nada en donde corresponde.

muchas gracias disculpen pero no he encontrado nada al respecto podrian ayudarme club.


La franja horaria es GMT +2. Ahora son las 05:42:56.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi