属性关键字SqlComputeOnChange,SqlFieldName,SqlListDelimiter,SqlListType
第113章 属性关键字 - SqlComputeOnChange
此关键字控制何时重新计算属性。仅适用于触发的计算属性。
用法
要指定何时重新计算属性,请使用以下语法:
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
时覆盖此属性的默认名称,请使用以下语法:
Property name As classname [ SqlFieldName = sqlfieldname ];
其中sqlfieldname
是一个SQL
标识符。
详解
此关键字指定用于在其SQL
投影中标识属性的列名。
默认
如果省略此关键字,属性名将用作SQL列名。
第115章 属性关键字 - SqlListDelimiter
指定在SQL
中用于列表的分隔符。适用于持久类中的列表属性。仅供传统应用程序使用。
用法
要为此列表属性指定SQL
中使用的分隔符,请使用以下系统:
Property Name As List Of Classname [ SqlListDelimiter = """delimiter""", SqlListType = DELIMITED ];
其中分隔符是分隔符。
详情
如果此属性是一个列表,并且如果SqlListType
是DECLARED
或SUBNODE
,则此关键字指定在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
。