首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Firebird FIBPlus组件读取未提交的

使用Firebird FIBPlus组件读取未提交的
EN

Stack Overflow用户
提问于 2022-07-29 07:13:55
回答 1查看 95关注 0票数 0

使用TpFIBTransaction组件,我试图启动一个读未承诺事务。

首先,TPBMode属性有3个可能的值:

  • tpbDefault
  • tpbReadCommitted
  • tpbRepeatableRead

TpFIBTransaction.StartTransaction中,我看到设置tpbReadCommitted强制执行以下参数:

  • isc_tpb_nowait
  • read_committed
  • rec_version

使用tpbRepeatableRead强制使用以下参数:

  • isc_tpb_nowait
  • 并发性

因此,拥有“自定义”事务参数的唯一方法似乎是设置tpbDefault值。

TrParams属性允许的值如下(来自fib.pas单元)

代码语言:javascript
复制
  TPBConstantNames: array[1..isc_tpb_last_tpb_constant] of String = (
    'consistency',
    'concurrency',
    'shared',
    'protected',
    'exclusive',
    'wait',
    'nowait',
    'read',
    'write',
    'lock_read',
    'lock_write',
    'verb_time',
    'commit_time',
    'ignore_limbo',
    'read_committed',
    'autocommit',
    'rec_version',
    'no_rec_version',
    'restart_requests',
    'no_auto_undo',
    'no_savepoint'
  );

我尝试只添加“read”值,但似乎仍然无法读取未提交的数据,即使TrParams属性中没有“TrParams”。

代码语言:javascript
复制
MyTransaction.TrParams.Clear();
MyTransaction.TrParams.Add('read');

TPBConstantNames中是否缺少一些值(如果存在,类似于'read_uncommitted‘),还是有其他方法来设置Firebird“读未提交”事务?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-29 08:29:45

这是不可能的,因为Firebird不支持读未组合的隔离级别。

您可以在文档文档中找到以下信息

备注 读未提交隔离级别是读提交的同义词,并且只为语法兼容性而提供。它提供与读提交完全相同的语义,并且不允许您查看其他事务的未提交更改。

以及:

Firebird支持的三个隔离级别是: 快照 快照表稳定性 使用两个规范提交的READ (没有RECORD_VERSION和RECORD_VERSION)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73162888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档