【问题标题】:Persist calculated master-block field which depends on details block, within commit在提交中保留取决于详细信息块的计算主块字段
【发布时间】:2017-01-15 20:53:39
【问题描述】:

我有一个带有细节块的主块。主块中的一个字段包含一个计算值,该值取决于细节块,并被持久化到数据库中。

details-block 有 POST-INSERT、POST-UPDATE 和 POST-DELETE 表单触发器,其中计算和设置 master-block 字段的值:

MASTERBLOCK.FIELD1:=FUNC1; --DB Function that queries the details block's table 

提交表单时,会发生以下情况:

  1. 主块与旧值一起保存
  2. 详细信息块已保存
  3. 执行表单触发器,计算并设置主块的值。
  4. 主块字段现在包含更新的值,但主块的记录状态不是CHANGED,并且更新的值没有保存。

如何强制计算字段在主块中持久化?

【问题讨论】:

    标签: oracle oracleforms


    【解决方案1】:

    “主块中的一个字段包含一个取决于细节块的计算值”

    通常,计算的总数的持续维护超过了按需计算它们所需的工作量。但也有例外,所以我们假设这里是这种情况。

    我认为这是您的问题:--DB Function that queries the details block's table。您的处理以无益的方式在客户端和服务器之间拆分。更好的方法是:

    1. 通过捕获细节块中发生的相关变化(例如在导航触发器中)来维护主块中的总数;或
    2. 计算总数并更新数据库过程中的主记录,返回总数以显示在表单中。

    如果不了解您案件的具体情况,就不可能给出明确的答案。关键是您需要了解事务作为工作单元的概念,并确保在数据库发出 COMMIT 之前准备好所有必要的更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      相关资源
      最近更新 更多