Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-04-2008
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 22
kuan-yiu Va camino a la fama
Entonces no te la jueges. Puede que al final nunca tengas accesos concurrentes pero lo mejor es programar como si los hubiese.
Responder Con Cita
  #2  
Antiguo 25-04-2008
cascarrabias cascarrabias is offline
Miembro
 
Registrado: abr 2006
Posts: 103
Poder: 21
cascarrabias Va por buen camino
Lo que te comentan los companieros es muy cierto...el punto esencial de una transaccion es que engloba multiples operaciones en un solo paso(todo o nada).

Tampoco debes olvidar, no solo hablando de muchos usuario, incluso pensando en uno solo haciendo una insercion de registros en digamos 3 tablas si por hazares del destino ocurre una falla en la insercion de una de las tablas (porque hasta errores improbables sucede) y solo lograste hacer la insercion en 2 y en la tercera no...ya vas a tener informacion inconsistente... te dejo este ejemplo muy sencillo pero util.....

Considere la base de datos de un banco que contiene balances para varias cuentas de clientes, supongamos que queremos registrar el pago de $100 desde la cuenta de Alice hacia la cuenta de Bob, las sentencias SQL a ejecutar para esta operacion serian como la siguiente:

Código SQL [-]
UPDATE cuentas SET balance = balance - 100 WHERE nombre = ‘Alice’;
UPDATE branches SET balance = balance - 100 WHERE nombre = (SELECT branch_name FROM cuentas WHERE nombre = ‘Alice’);
UPDATE cuentas SET balance = balance + 100 WHERE nombre = ‘Bob’;
UPDATE branches SET balance = balance + 100 WHERE nombre = (SELECT branch_name FROM cuentas WHERE nombre = ‘Bob’);
Como se puede observar hay varias actualizaciones involucradas para terminar la operacion, los operadores del banco deben estar seguros de que todas esas actualizaciones se ejecuten, o en caso de falla que ninguna se ejecute, ya que se podria dar el caso de que Bob reciba $100 sin que sean debitados de la cuenta de Alice. Agrupando las actualizaciones en una sola transaccion se puede garantizar que en caso de un fallo ninguna actualizacion se ejecute.

Última edición por cascarrabias fecha: 25-04-2008 a las 12:13:28.
Responder Con Cita
  #3  
Antiguo 25-04-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 21
MaMu Va por buen camino
Los ejemplos de roman y cascarrabias me han sido muy utiles para apreciar el objeto de una transacción.
Ahora bien,

1) Cuándo debo iniciar la transacción?
2) Cómo debe finalizar?
3) Es el engine quien se encarga de negociar la conciliación de datos?
4) Si tengo un error, utilizo RollBack, pero como se cuando es exitosa?

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #4  
Antiguo 25-04-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
Hola...

Te contesto de acuerdo a mi experiencia:

Cita:
Empezado por MaMu Ver Mensaje
1) Cuándo debo iniciar la transacción?
Una transacción la debes iniciar justo antes de mandar los datos a la base de datos:

Código Delphi [-]
Transaction1.StartTransaction;
DataSet1.Post;
DataSet2.Post;

Cita:
2) Cómo debe finalizar?
Mayormente con Commit o Rollback, esto de acuerdo al resultado de las operaciones...

Cita:
3) Es el engine quien se encarga de negociar la conciliación de datos?
Si te refieres a la integridad de los datos, mayormente se verifican en la parte del servidor mediante reglas de integridad referencial, disparadores y procedimientos almacenados.

Si alguna de estas operaciones de verificador terminan en un error, el servidor se encarga de comunicar al cliente de tal situación...

Cita:
4) Si tengo un error, utilizo RollBack, pero como se cuando es exitosa?

Saludos
Usando la captura de excepciones:

Código Delphi [-]
Transaction.StartTransaction;
try
  DataSet1.Post;
  DataSet2.Post;
  Transaction.Commit
except
  Transaction.Rollback;
  ShowMessage('Ocurrió un error')
end

Espero que te aclare un poco tus dudas...


Saludos...
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Diferencias entre Firebird e Interbase David Firebird e Interbase 6 28-04-2007 16:14:47
Diferencias entre Delphi Rabata Varios 4 27-10-2005 17:02:05
Diferencias entre OnActivate y OnPaint FunBit OOP 4 02-09-2005 16:40:22
Diferencias Entre Componentes Ado Y Dbexpress mendozasoftware Firebird e Interbase 6 06-05-2005 02:43:14
Diferencias entre FREE y DESTROY bustio OOP 1 23-06-2004 05:48:35


La franja horaria es GMT +2. Ahora son las 06:17:03.


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