RAD Studio Delphi 10.4中对FireDAC事务隔离配置的更改

在RAD Studio 10.4之前,FireDAc连接的默认事务隔离选项被读取为commit。那就是TFDConnection.TxOptions.Isolation是xiReadCommitted。这是为组件设置的值,并且是默认值,它没有发送到数据库。FireDAC只是假设其配置中的默认值是数据库的默认值,并且在会话开始时并未明确将此隔离配置发送到数据库。例如,在MySQL中,如果未修改默认值,则所需的命令是SET SESSION TRANSACTION ISOLATION LEVEL未执行。在这种情况下,无论在FireDAC默认配置中设置了什么,MySQL事务隔离都将保留为数据库默认值xiRepeatableRead。 

为了解决此问题,我们决定最好将默认隔离级别保持为xiUnspecified,这意味着,如果您不需要特定的隔离级别,则使用特定数据库的默认配置-这是一个已经预先设置的int数据库,您无需询问配置。默认隔离级别已针对特定数据库进行了优化,因为默认设置不同,并且某些隔离级别甚至都不能很好地被所有数据库引擎支持。欢迎加入Delphi开发局QQ群:32422310  Delphi控件源码下载网站

如果开发人员希望使用与数据库使用的默认级别不同的隔离级别,则必须在组件配置或代码中显式设置隔离级别。如果开发人员想要使用数据库默认值,则不需要代码。

这是FireDAC术语中主要数据库的默认隔离级别-再次,该属性值只是xiUnspecified:

DB2-xiReadCommitted
InterBase和Firebird-xiSnapshot
MySQL和MariaDB-xiRepeatableRead
Oracle-xiReadCommitted
Microsoft SQL Server-xiReadCommitted
SQLite-xiSerializible
PostgreSQL-xiReadCommitted

我希望这有助于弄清更改并解释如何解决,将FireDAC连接的事务隔离级别更改为您特别需要的(如果与数据库默认设置不同的话)。RAD Studio 10.4的发行说明中未列出此更改,但确实引起了一些担忧(以及错误报告)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值