Delphi - Problemas con transacciones

 
Vista:

Problemas con transacciones

Publicado por David (3 intervenciones) el 14/08/2001 12:59:16
Estoy trabajando con transacciones, y al hacer un StartTransaction de la TDataBase me da el error siguiente, " The transaction isolation level must be dirty read for local databases".
Estaria muy agredecido si me pudieseis contestarme.
Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas con transacciones

Publicado por Ernesto D'Spirito (706 intervenciones) el 14/08/2001 16:03:12
Tienes que establecer la propiedad TransIsolation del componente TDatabase con el valor tiDirtyRead para que puedas realizar transacciones con la BDE y tablas Paradox, dBASE, Access o FoxPro (es lo que llama "local databases").

Con otras bases de datos que accedas a través de la BDE (Interbase, MS-SQL Server, Oracle, Informix, etc.) puedes usar otras opciones (algunos por ejemplo no admiten tiDirtyRead pero todos admiten tiRepeatableRead y/o tiReadCommitted).

Espero que te sirva la aclaración.

Ernesto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con transacciones

Publicado por mamcx (36 intervenciones) el 17/08/2001 18:23:18
Lo que dice Ernesto es cierto, pero es bueno saber porque... no?

Una transacción basicamente se encarga de garantizar la integridad de la información. El nivel de aislamiento (isolation) determina que tan integramente debe realizarse el proceso...

Por ejemplo, DirtyRead (Lectura Sucia) quiere decir que es una transacción de pesima seguridad, porque cualquier otra transacción/usuario puede leer los datos de tu transaccion aunque NO SE HAYA COMPLETADO. Porque es esto un problema?

Ten en cuente este ejemplo:

Tabla de empleados de Empresa Repobre Ltda

Cod Nombre Sueldo

1 A $10
2 B $20
3 C $30

Si inicias una transacción que modifica el sueldo, aumentandole a todos $10 (UPDATE Empleados SET Sueldo=Sueldo+10), y vas en el cod 2, y justo en ese momento otra transacción/usuario esta sacando un informe del total de sueldos a pagar, obtendra como total $50, lo cual es ERRONEO porque el total debe dar $90 si se termina el proceso o $60 (justo antes del proceso), ya que son los unicos dos valores que representan informació REAL o INTEGRA.

Normalmente estos lios no se ven con aplicaciones monousario o con pocos datos... pero es bueno tener en cuenta si por extrañas casualidades la aplicación debe crecer....Esa es una de las razones porque se utilizan Motores de Bases de Datos Sql (Sql Server, Oracle, Interbase) en las empresas, ya que si permiten niveles de aislamiento mas seguros.

En el sitio de Ian Marteens hay más info al respecto

Chaou.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar