O Firebird permite os seguintes níveis de isolamento de transações:
1 (read committed, o padrão),
3 (serializable)
4 (versioning).
O Firebird implementa travamento de registro em todos os casos.
O Firebird executa travamentos otimistas (optimistic locking). Sua transação não tentará travar um registro até que vc envie um update que afete aquele registro. Isto significa que é possível, embora raro, que seu update falhe, pois outro cliente travou o registro, mesmo que você tenha iniciado a transação antes dele.
O Firebird usa um mecanismo único de “versionamento” (versioning) para atingir um nível de granularidade mais refinado que o permitido pelo método tradicional de travamento por registro (row-level locking). O mecaniso de versionamento permite que qualquer número de clientes leiam uma cópia consistente de qualquer registro, mesmo que no mesmo momento outro cliente esteja atualizando o mesmo registro. Leitores e gravadores (readers and writers) nunca bloqueiam um ao outro, e o mecanismo do banco de dados Firebird mantém estas versões de registros de forma transparente até onde diz respeito ao cliente.
Também existe suporte ao commit-em-duas-fases (two phase commit) entre diferentes bancos de dados Firebird. Existe uma restrição de que o máximo de 10 bancos de dados podem ser usados simultaneamente em uma transação com commit em duas fases. Se você precisa usar o commit em duas fases, então será necessário usar a seguinte chamada:
Esta chamada cria uma conexão comum, para cancelar a conexão comum:
O Driver ODBC do Firebird por padrão usa uma transação por conexão, entretanto, de forma programática, você pode usar uma estrutura de transações mais flexível. Por exemplo, você pode usar multiplas transações dentro de uma conexão, onde uma conexão pode estar usando uma série de transações de leitura/escrita. É também possível que se use conexões independentes a diferentes bancos de dados Firebird para conduzir os commits em duas fases entre multiplos bancos de dados.
Para maiores detalhes de como fazer isso e para outros tópicos avançados, por favor, olhe nos exemplos.