#
第113章 属性关键字 - SqlComputeOnChange 此关键字控制何时重新计算属性。仅适用于触发的计算属性。 # 用法 要指定何时重新计算属性,请使用以下语法: ```java Property name As classname [ SqlComputed, SqlComputeCode=sqlcomputecode, SqlComputeOnChange = propertynames ]; ``` 其中`sqlcomputecode`在`SqlComputeCode`中描述,`propertyname`是单个属性名或以逗号分隔的属性名列表。该值还可以包括值`%%INSERT`或`%%UPDATE`。 请注意,必须使用实际的属性名,而不是`SqlFieldname`给出的值。 # 详解 此关键字仅适用于触发的计算属性;对于其他属性,它将被忽略。(触发的计算属性是一个属性,其`SqlComputed`为真,并且指定了`SqlComputeCode`,但是其`computed`和`Transient`都为假) 此关键字控制重新计算此属性的条件。重新计算可能源于: - 对任何指定属性的修改。 - 触发器事件的发生。 如果关键字的值为`%%INSERT`或`%%UPDATE`,则分别调用`INSERT`或`UPDATE`,指定字段(属性)值的事件触发计算。 - 使用`%%INSERT`,当一行被插入到表中时, IRIS计算字段值。 IRIS调用`SQLComputeCode`关键字中指定的代码来设置该值。如果`SQLComputeCode`使用相同的字段作为输入值, IRIS使用为该字段显式提供的值;如果没有给定值,IRIS使用`initialiquepression`(如果指定了这个)或`null`(如果没有指定`initialiquepression`)。 - 使用`%%UPDATE`,当一行被插入到表中时, IRIS计算字段值,当一行被更新时,它重新计算。在这两种情况下, IRIS都会调用`SQLComputeCode`关键字中指定的代码来设置该值。如果`SQLComputeCode`使用相同的字段作为输入值, IRIS使用为该字段显式提供的值;如果没有给出值, IRIS将使用前一个字段值。 任何由事件触发的计算都在验证和规范化之前立即发生(验证和规范化之后将值写入数据库)。 注意:由事件触发的字段值计算可能会覆盖任何显式指定的属性值,这取决于计算属性值的代码。 # 默认 关键字`SqlComputeOnChange`的默认值是一个空字符串。 #
第114章 属性关键字 - SqlFieldName 指定要在`SQL`投影中使用的字段名。适用于持久类。 # 用法 要在将表投影到`SQL`时覆盖此属性的默认名称,请使用以下语法: ```java Property name As classname [ SqlFieldName = sqlfieldname ]; ``` 其中`sqlfieldname`是一个`SQL`标识符。 # 详解 此关键字指定用于在其`SQL`投影中标识属性的列名。 # 默认 如果省略此关键字,属性名将用作SQL列名。 #
第115章 属性关键字 - SqlListDelimiter 指定在`SQL`中用于列表的分隔符。适用于持久类中的列表属性。仅供传统应用程序使用。 # 用法 要为此列表属性指定`SQL`中使用的分隔符,请使用以下系统: ```java Property Name As List Of Classname [ SqlListDelimiter = """delimiter""", SqlListType = DELIMITED ]; ``` 其中分隔符是分隔符。 # 详情 如果此属性是一个列表,并且如果`SqlListType`是`DECLARED`或`SUBNODE`,则此关键字指定在`SQL`中用于此属性的分隔符。提供此关键字是为了支持传统应用程序。 # 默认 `SqlListDelimiter`关键字的默认值是一个空字符串。 ```java Property Things As list Of %String [ SqlListDelimiter = """,""", SqlListType = DELIMITED ]; ``` #
第116章 属性关键字 - SqlListType 指定此字段的值以`SQL`在内存中表示并存储在磁盘上。仅适用于持久类中的列表属性。仅供旧版应用程序使用。 # 用法 ```java Property Name As List Of Classname [ SqlListType = sqllisttype ]; ``` 其中`sqllisttype`是下列之一: - `list`—列表以`$List()`格式存储在内存和磁盘上。这是默认设置。 - `DELIMITED`—列表作为分隔字符串存储在内存和磁盘中。分隔符由`SqlListDelimiter`关键字指定。 - `SUBNODE` —列表存储在磁盘上的子节点中;也就是说,每个列表元素都在一个单独的全局节点中。如果未指定`SqlListDelimiter`,该字段的内存值为`$List`格式。如果指定了`SqlListDelimiter`,内存中的格式是一个分隔字符串。 # 详情 `SqlListType`控制一个字段的值如何在内存中用SQL表示,以及它们如何存储在磁盘上。 提供此关键字是为了支持旧版应用程序。 # 默认 默认值为`LIST`。