文章
姚 鑫 · 八月 17, 2021 阅读大约需 4 分钟

属性关键字SqlComputeOnChange,SqlFieldName,SqlListDelimiter,SqlListType

第113章 属性关键字 - SqlComputeOnChange

此关键字控制何时重新计算属性。仅适用于触发的计算属性。

用法

要指定何时重新计算属性,请使用以下语法:

Property name As classname [ SqlComputed, SqlComputeCode=sqlcomputecode, SqlComputeOnChange = propertynames ];

其中sqlcomputecodeSqlComputeCode中描述,propertyname是单个属性名或以逗号分隔的属性名列表。该值还可以包括值%%INSERT%%UPDATE

请注意,必须使用实际的属性名,而不是SqlFieldname给出的值。

详解

此关键字仅适用于触发的计算属性;对于其他属性,它将被忽略。(触发的计算属性是一个属性,其SqlComputed为真,并且指定了SqlComputeCode,但是其computedTransient都为假)

此关键字控制重新计算此属性的条件。重新计算可能源于:
- 对任何指定属性的修改。
- 触发器事件的发生。

如果关键字的值为%%INSERT%%UPDATE,则分别调用INSERTUPDATE,指定字段(属性)值的事件触发计算。

  • 使用%%INSERT,当一行被插入到表中时, IRIS计算字段值。 IRIS调用SQLComputeCode关键字中指定的代码来设置该值。如果SQLComputeCode使用相同的字段作为输入值, IRIS使用为该字段显式提供的值;如果没有给定值,IRIS使用initialiquepression(如果指定了这个)或null(如果没有指定initialiquepression)。
  • 使用%%UPDATE,当一行被插入到表中时, IRIS计算字段值,当一行被更新时,它重新计算。在这两种情况下, IRIS都会调用SQLComputeCode关键字中指定的代码来设置该值。如果SQLComputeCode使用相同的字段作为输入值, IRIS使用为该字段显式提供的值;如果没有给出值, IRIS将使用前一个字段值。

任何由事件触发的计算都在验证和规范化之前立即发生(验证和规范化之后将值写入数据库)。

注意:由事件触发的字段值计算可能会覆盖任何显式指定的属性值,这取决于计算属性值的代码。

默认

关键字SqlComputeOnChange的默认值是一个空字符串。

第114章 属性关键字 - SqlFieldName

指定要在SQL投影中使用的字段名。适用于持久类。

用法

要在将表投影到SQL时覆盖此属性的默认名称,请使用以下语法:

Property name As classname [ SqlFieldName = sqlfieldname ];

其中sqlfieldname是一个SQL标识符。

详解

此关键字指定用于在其SQL投影中标识属性的列名。

默认

如果省略此关键字,属性名将用作SQL列名。

第115章 属性关键字 - SqlListDelimiter

指定在SQL中用于列表的分隔符。适用于持久类中的列表属性。仅供传统应用程序使用。

用法

要为此列表属性指定SQL中使用的分隔符,请使用以下系统:

Property Name As List Of Classname [ SqlListDelimiter = """delimiter""", SqlListType = DELIMITED ]; 

其中分隔符是分隔符。

详情

如果此属性是一个列表,并且如果SqlListTypeDECLAREDSUBNODE,则此关键字指定在SQL中用于此属性的分隔符。提供此关键字是为了支持传统应用程序。

默认

SqlListDelimiter关键字的默认值是一个空字符串。

Property Things As list Of %String [ SqlListDelimiter = """,""", SqlListType = DELIMITED ]; 

第116章 属性关键字 - SqlListType

指定此字段的值以SQL在内存中表示并存储在磁盘上。仅适用于持久类中的列表属性。仅供旧版应用程序使用。

用法

Property Name As List Of Classname [ SqlListType = sqllisttype ]; 

其中sqllisttype是下列之一:

  • list—列表以$List()格式存储在内存和磁盘上。这是默认设置。
  • DELIMITED—列表作为分隔字符串存储在内存和磁盘中。分隔符由SqlListDelimiter关键字指定。
  • SUBNODE —列表存储在磁盘上的子节点中;也就是说,每个列表元素都在一个单独的全局节点中。如果未指定SqlListDelimiter,该字段的内存值为$List格式。如果指定了SqlListDelimiter,内存中的格式是一个分隔字符串。

详情

SqlListType控制一个字段的值如何在内存中用SQL表示,以及它们如何存储在磁盘上。

提供此关键字是为了支持旧版应用程序。

默认

默认值为LIST

00
1 0 0 19
登录或注册以继续