触发器关键字Foreach,Internal,Language,NewTable
第133章 触发器关键字 - Foreach
控制触发器何时被触发。
用法
Trigger name [ Event = sqlevent, Foreach = foreach ] { //implementation }
其中foreach
是下列值之一:
row
— 该触发器由触发语句影响的每一行触发。
注意,TSQL
不支持行级触发器,因此Language
关键字的设置必须是objectscript
。row/object
— 此触发器由受触发语句或通过对象访问进行的更改影响的每一行触发。请注意,TSQL不支持行级触发器,因此Language
关键字的设置必须为objectscript
。
这个选项定义了一个统一触发器,之所以这么叫,是因为它是由通过SQL或对象访问发生的数据更改触发的。
(相比之下,与其他触发器相比,如果在通过对象访问发生更改时使用相同的逻辑,则需要实现回调,如%OnDelete()
。)
statement
— 整个语句只触发一次触发器。
ObjectScript
和TSQL
都支持语句级触发器;
即Language关键字的设置分别为objectscript
或tsql
。
详情
控制何时触发触发器。
默认
如果省略此关键字,则触发器为行级触发器。
例外
TSQL
不支持行级触发器。
第134章 触发器关键字 - Internal
指定此触发器定义是否为内部触发器(不显示在类文档中)。
用法
要指定此触发器定义为内部触发器,请使用以下语法:
Trigger name [ Event = sqlevent, Internal ] { //implementation }
否则,省略此关键字或将单词Not
放在关键字的前面。
详情
内部类成员不会显示在类文档中。如果想让用户看到一个类,但不看到它的所有成员,这个关键字很有用。
默认
如果省略此关键字,此触发器将显示在类文档中。
第135章 触发器关键字 - Language
指定编写触发器的语言。
用法
要指定编写触发器的语言,请使用以下语法:
Trigger NewTrigger1 [ Event = sqlevent, Language = language ] { //implementation }
其中language
是下列值之一:
objectscript
—此触发器用objectscript
编写(默认)。tsql
——这个触发器是在tsql
写的。如果使用此值,触发器必须是语句级触发器;也就是说,Foreach
关键字的设置必须是语句。
详情
此关键字指定编写触发器的语言。
默认
如果省略这个关键字,语言就是ObjectScript。
第136章 触发器关键字 - NewTable
指定存储受事件影响的行或语句的新值的转换表的名称。
用法
要指定存储新值的转换表的名称,请使用以下语法:
Trigger name [ Event = sqlevent, OldTable = oldtable, NewTable = newtable ] { //implementation }
其中newtable
是此命名空间中的SQL表的名称。
详情
每个触发器都可以通过转换表(由旧表和新表关键字指定)访问受事件影响的行或语句的旧值和新值。
默认
NewTable
关键字的默认值为空。