RE:Problemas con transacciones
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.