Firebird soporta los siguientes niveles de aislamiento de transacciones:
1 (leer concretados, predeterminado),
3 (serializable)
4 (versionado).
Firebird implementa bloqueo a nivel de fila en todos los casos.
Firebird realiza bloqueos de tipo optimista, su transacción no intentará bloquear un registro hasta que usted emita una operación de actualización que afecte ése registro. Esto quiere decir que es posible, aunque inusual, que su actualización falle porque otro cliente ha bloqueado el registro, aún si su transacción fue iniciada antes que la del otro cliente.
Firebird utiliza un motor de versionado único para conseguir una granularidad más fina que la suministrada por el bloqueo a nivel de fila tradicional. El motor de versionado permite que cualquier número de clientes pueda leer una copia coherente de cualquier registro, aún si al mismo tiempo otro cliente está actualizando esa misma fila. Lectores y escritores nunca se bloquean entre ellos, y el motor de base de datos Firebird mantiene estas versiones de registro transparentemente hasta donde al cliente le interese.
También se provee soporte para concreciones de transacción de dos fases (two phase commit transactions) entre dos diferentes bases de datos Firebird. Existe una restricción en la cual solo hasta 10 bases de datos pueden ser empleadas simultáneamente en una concreción de transacción de dos fases. Si necesitara utilizar una concreción de transacción de dos fases deberá utilizar la siguiente llamada:
Esta llamada crea una conexión común.
Para cancelar la conexión común:
Firebird ODBC utiliza una transacción por conexión de manera predeterminada, sin embargo puede utilizarse una estructura de transacción más flexible programáticamente. Por ejemplo, puede emplear múltiples transacciones en una conexión, donde una conexión puede estar siendo usada simultáneamente por un número de transacciones de lectura/escritura. También es posible hacer uso de conexiones independientes a diferentes bases de datos Firebird para llevar a cabo una concreción de transacción de dos fases entre múltiples bases de datos.
Para mayores detalles sobre cómo hacer ésto y otros temas avanzados por
favor consulte los ejemplos.