关键字触发器定义,扩展数据块,类关键字Abstract,ClassType

第九章 触发器定义

描述触发器定义的结构。

介绍

触发器是在SQL中发生特定事件时执行的代码段。InterSystems IRIS支持基于执行INSERTUPDATEDELETE命令的触发器。根据触发器定义,指定的代码将在相关命令执行之前或之后立即执行。每个事件可以有多个触发器,只要它们被分配了执行顺序。

可以向持久类添加触发器定义。它们在其他类中没有意义。

详情

触发器定义具有以下结构:

/// description 
Trigger name [ keyword_list ]  
{ implementation }
  • description 描述(可选)旨在显示在“类参考”中。默认情况下,描述为空白。
  • name(必需)是触发器的名称。这必须是有效的类成员名称,并且不能与任何其他类成员名称冲突。
  • keyword_list(必需)是以逗号分隔的关键字列表,用于进一步定义触发器。
  • implementation 实现(必需)是零行或多行ObjectScript代码,用于定义触发触发器时要执行的代码。

示例

/// 此触发器在每次插入后更新日志表
Trigger LogEvent [ Event = INSERT, Time = AFTER ]
{
    // 获取插入行的行id
    NEW id
    SET id = {ID}

    // 将值插入日志表
    &sql(INSERT INTO LogTable (TableName, IDValue) VALUES ('MyApp.Person', :id))
 
}

第十章 扩展数据块

描述XData块的结构。

介绍

XData块是包含在类定义中的命名数据单元,通常由类中的方法使用。最常见的情况是,它是一个XML文档,但是它可以由其他形式的数据组成,例如JSONYAML

详情

XData块具有以下结构:

/// description 
XData name [ keyword_list ]  
{ 
data 
}
  • description 描述(可选)旨在显示在“类别参考”中。默认情况下,描述为空白。
  • name(必需)是XData块的名称。这必须是有效的类成员名称,并且不能与任何其他类成员名称冲突。
  • data 数据(可选)包含扩展数据块的有效载荷。如果是XML,则它必须是格式良好的文档(只有一个根元素),开头没有XML声明。
  • keyword_list(可选)是以逗号分隔的关键字列表,进一步定义了XData块。如果省略此列表,也要省略方括号。

示例

Class Demo.CoffeeMakerRESTServer Extends %CSP.REST
 {
  Parameter HandleCorsRequest = 1

  XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]
  {
    <Routes>
      <Route Url="/test" Method="GET" Call="test"/>
      <Route Url="/coffeemakers" Method="GET" Call="GetAll" /> 
      <Route Url="/coffeemaker/:id" Method="GET" Call="GetCoffeeMakerInfo" /> 
      <Route Url="/newcoffeemaker" Method="POST" Call="NewMaker" /> 
      <Route Url="/coffeemaker/:id" Method="PUT" Call="EditMaker" /> 
      <Route Url="/coffeemaker/:id" Method="DELETE" Call="RemoveCoffeemaker"/>
   </Routes> 
  }

第十一章 类关键字 - Abstract

指定这是否是抽象类。

用法

要将类标记为抽象类,请使用以下语法:

Class MyApp.MyClass [ Abstract ]  
{ //class members }

否则,省略此关键字或将单词Not放在关键字的前面。

详解

如果一个类是抽象的,就不能创建它的实例。

对子类的影响

此关键字不是继承的。

默认

如果省略这个关键字,这个类就不是抽象的。

第十二章 类关键字 - ClassType

指定此类的类型(或行为)。

用法

要指定类的类型(如果需要),请使用以下语法:

Class MyApp.MyClass [ ClassType = classtype ]  
{ //class members }

其中classtype是下列之一:

  • datatype — 该类是一个数据类型类,用于表示文字值。
  • persistent 持久—该类表示要存储在数据库中的数据。
  • serial —该类表示要存储在另一个持久对象中(处于序列化状态)的数据。
  • stream —该类表示流数据。
  • view视图—该类用于定义一个SQL视图。
  • index —该类是一个索引类,一个定义索引接口的专用类。
  • 空字符串,表示此类没有特定类型。抽象类通常不指定类类型。

如果未指定此关键字,则类类型从主超类继承(如果有)。

请注意,ClassType是为%RegisteredObject%SerialObject%Persistent和数据类型类等系统类指定的,因此如果对这些类进行子类化,通常不需要指定此关键字。

详解

此关键字指定如何使用此类。类别编译器使用类别类型关键字来决定如何编译类别。例如,如果ClassType是持久性的,则类编译器还会调用存储编译器来为类生成持久性代码。除非明确定义,否则ClassType的值要么是默认值,要么是从主超类继承而来的。

对于持久性类,只有在标准持久性行为被重写时,才需要显式的ClassType语句。如果一个类定义包含这样的语句,要么是因为开发人员指定了它,要么是因为这个类起源于用旧版本的InterSystems IRIS开发的代码。

对子类的影响

这个关键字是从主超类继承的。子类可以覆盖关键字的值。

默认

如果省略此关键字,类类型将从主超类继承(如果有)。

注意:分片类的类类型不能有持久以外的任何值。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容