PDA

Ver la Versión Completa : Ejemplo de una Transaccion


@-Soft
04-08-2003, 14:34:12
hola

podria algun colega del foro tener la amabilidad de escribir un ejemplo sencillo y detallado de como se realiza una transaccion. sucede que tengo que empezar a trabajar con este tipo de operacion para la integridad de los datos y no se como se utiliza.


Saludo.

CORBATIN
04-08-2003, 15:36:54
Aquí tienes un pequeño ejemplo:

with Query1 do
begin
Database1.StartTransaction;
try
ApplyUpdates;
Database1.Commit; {inicias la transacción};
except
Database1.Rollback; {en caso de error se deshacen los cambios hasta el último commit realizado}
raise;
end;
CommitUpdates; {se actualizan los datos y se borran de la caché si todo va bien}
end;

end;

Aunque yo sé de que va la cosa, pero este ejemplo lo he sacado de la ayuda de delphi, te aconsejo que busques en ella, yo no domino muy bien el ingles, pero con algunas palabras sueltas se sacan buenas conclusiones, saludos.

delphi.com.ar
04-08-2003, 16:30:30
Disculpa CORBATIN, pero voy a cambiar tus traducciones:

Con querys modificables:
procedure TForm1.ApplyButtonClick(Sender: TObject);
begin
with CustomerQuery do
begin
Database1.StartTransaction; {Abre la transacción}
try
ApplyUpdates; {Intenta escribir las modificaciones en la base de datos};
Database1.Commit; {Si el ApplyUpdates es exitoso, cierra la transacción y guarda los datos};
except
Database1.Rollback; {Si el ApplyUpdates falla, deshace los cambios};
raise;
end;
CommitUpdates; {si es exitoso, borra el cache}
end;
end;

Con ExecSQL modificables:
procedure TForm1.ApplyButtonClick(Sender: TObject);
begin
with CustomerQuery do
begin
Database1.StartTransaction; {Abre la transacción}
try
Sql.Text := 'UPDATE....';
ExecSQL;
Database1.Commit; {cierra la transacción y guarda los datos};
except
Database1.Rollback; {Si Falla, deshace los cambios};
raise;
end;
end;
end;

@-Soft
05-08-2003, 14:39:29
hola

despues de haber visto sus ejemplos que son bastantes satisfactorios, quisiera hacerles otra preguntita.

las transacciones solo funcionan con querys, porque yo estoy utilizando tables para insertar y todo eso y querys para las consultas.

saludos.

__marcsc
05-08-2003, 14:51:44
Hola,

fijate que las transacciones son a nivel de la BD, de modo que no importa si es un query o una tabla, la que ejecuta la transacción es la Conexión a la que están enlazados los queries o tables.

Saludos.