Antes do RAD Studio 10.4, o padrão da opção de isolamento de transação para conexões FireDAc era lido e confirmado. Isso é TFDConnection.TxOptions.Isolation foi xiReadCommitted. Este foi o valor definido para o componente e, sendo o padrão, ele não foi enviado para o banco de dados. FireDAC apenas assumiu que o valor padrão em sua configuração era o padrão do banco de dados e não enviou explicitamente essa configuração de isolamento para o banco de dados no início de uma sessão. Por exemplo, no MySQL o comando necessário é SET SESSION TRANSACTION ISOLATION LEVEL não foi executado se o padrão não foi modificado. Nesse caso, o isolamento da transação do MySQL permanecia com o valor padrão do banco de dados, que é xiRepeatableRead, independentemente do que foi definido na configuração padrão do FireDAC.
Para corrigir esse problema, decidimos que é melhor manter o nível de isolamento padrão em xiUnspecified, o que significa que se você não precisar de um nível de isolamento específico, a configuração padrão para o banco de dados específico é usada – esta é a que já está predefinida int O banco de dados e você não precisa pedir configuração. O nível de isolamento padrão é otimizado para um banco de dados específico, pois os padrões são diferentes e alguns dos níveis de isolamento nem mesmo são suportados por todos os mecanismos de banco de dados da mesma forma.
Se um desenvolvedor deseja usar um nível de isolamento diferente do padrão usado pelo banco de dados, ele deve ser definido explicitamente na configuração do componente ou no código. Se o desenvolvedor quiser usar o banco de dados padrão, nenhum código é necessário.
Aqui estão os níveis de isolamento padrão dos principais bancos de dados em termos FireDAC – novamente, o valor da propriedade é apenas xiUnspecified:
DB2 – xiReadCommitted
InterBase e Firebird – xiSnapshot
MySQL e MariaDB – xiRepeatableRead
Oracle – xiReadCommitted
Microsoft SQL Server – xiReadCommitted
SQLite – xiSerializible
PostgreSQL – xiReadCommitted
Espero que isso ajude a esclarecer a mudança e explicar como contorná-la, alterando o nível de isolamento da transação de sua conexão FireDAC para aquele de que você precisa especificamente, se diferente do padrão do banco de dados. Esta mudança não foi listada nas notas de lançamento do RAD Studio 10.4 e causou algumas preocupações (e relatórios de erros).
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition