前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关键字触发器定义,扩展数据块,类关键字Abstract,ClassType

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

作者头像
用户7741497
发布于 2022-07-06 01:56:48
发布于 2022-07-06 01:56:48
86300
代码可运行
举报
文章被收录于专栏:hml_知识记录hml_知识记录
运行总次数:0
代码可运行

第九章 触发器定义

描述触发器定义的结构。

介绍

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

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

详情

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

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

示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/// 此触发器在每次插入后更新日志表
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块具有以下结构:

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

示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

指定这是否是抽象类。

用法

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Class MyApp.MyClass [ Abstract ]  
{ //class members }

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

详解

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

对子类的影响

此关键字不是继承的。

默认

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

第十二章 类关键字 - ClassType

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

用法

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Class MyApp.MyClass [ ClassType = classtype ]  
{ //class members }

其中classtype是下列之一:

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

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

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

详解

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

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

对子类的影响

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

默认

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

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

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Storage关键字SqlRowIdProperty,SqlTableNumber,State,StreamLocation,Type
对于串行(嵌入式)类,此关键字指示使用哪个数据定义来定义对象的序列化状态(序列化时对象属性的排列方式)。这也是默认数据定义,默认结构生成器将向其添加未存储的属性。
用户7741497
2022/07/07
3020
类关键字SqlTableName,StorageStrategy,System,ViewQuery
通常,当类名是SQL保留字(并不少见)或希望SQL表包含类名不支持的字符(如“_”字符)时,可以使用此关键字。
用户7741497
2022/07/06
4120
类关键字Hidden,Inheritance,Language,LegacyInstanceContext
如果一个类是隐藏的,当使用Visual Studio代码的对象脚本扩展时,它不会在类引用中列出,也不会在studio检查器的工作区窗口中列出,也不会在对象脚本资源管理器窗格中列出。(但是,如果在“打开”对话框中键入该类的名称,或者在使用VS Code - ObjectScript时将其保存到本地工作区,仍然可以在Studio中打开该类。)
用户7741497
2022/07/06
1950
类关键字NoExtent,OdbcType,Owner,ProcedureBlock
如果该关键字为真,则该类没有 extent。不能创建此类的实例。通常,这样的类会扩展或覆盖从%Library.Persistent继承的标准持久接口。
用户7741497
2022/07/06
2900
类关键字ClientDataType,ClientName,CompileAfter,DdlAllowed
此关键字指定将此类投影到客户端技术时使用的客户端数据类型。每个数据类型类都必须指定一个客户端数据类型。
用户7741497
2022/07/06
2060
关键字类定义,外键定义,索引定义,方法定义
一个类可以包含熟悉的类元素,如属性、方法和参数(在其他类语言中称为常量)。它还可以包含通常不在类中定义的项,包括触发器、查询和索引。
用户7741497
2022/07/06
1.1K0
关键字参数定义,映射定义,属性定义,查询定义
参数定义定义了一个给定类的所有对象都可用的常数值。创建类定义时(或在编译前的任何时候),可以设置其类参数的值。默认情况下,每个参数的值都是空字符串,但是可以在参数定义中指定一个非空值。在编译时,为类的所有实例建立参数值。除了极少数例外,该值不能在运行时更改。
用户7741497
2022/07/06
9060
触发器关键字UpdateColumnList,Internal,MimeType,SchemaSpec
其中updatecolumnlist是一个列名或用逗号分隔的列名列表,用括号括起来。
用户7741497
2022/07/07
2790
触发器关键字Foreach,Internal,Language,NewTable
这个选项定义了一个统一触发器,之所以这么叫,是因为它是由通过SQL或对象访问发生的数据更改触发的。 (相比之下,与其他触发器相比,如果在通过对象访问发生更改时使用相同的逻辑,则需要实现回调,如%OnDelete()。)
用户7741497
2022/07/07
6340
Java之Java关键字及其作用
private 关键字是访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量)。 只能在声明 private(内部)类、方法或字段的类中引用这些类、方法或字段。在类的外部或者对于子类而言,它们是不可见的。 所有类成员的默认访问范围都是 package 访问,也就是说,除非存在特定的访问控制修饰符,否则,可以从同一个包中的任何类访问类成员。
全栈程序员站长
2022/06/30
1K0
类关键字SoapBodyUse,SqlCategory,SqlRowIdName,SqlRowIdPrivate
指定此类中定义的任何web method的编码。此关键字仅适用于web服务和web客户端类。
用户7741497
2022/07/06
5290
触发器关键字OldTable,Order,SqlName,Time
每个触发器都可以通过转换表(由旧表和新表关键字指定)访问受事件影响的行或语句的旧值和新值。
用户7741497
2022/07/07
3010
方法关键字PlaceAfter,Private,ProcedureBlock,PublicList
此关键字指定类编译器应该将此方法放在它为类创建的例程中列出的方法之后。此关键字用于极少数需要控制类编译器为方法生成代码的顺序的情况。
用户7741497
2022/07/07
2090
类关键字DependsOn,Deprecated,Final,GeneratedBy
如果此类的编译使用方法生成器逻辑中的这些其他类,则此关键字非常有用。如果类包含调用其他类的初始表达式,这也很有用。
用户7741497
2022/07/06
2210
属性关键字InitialExpression,Internal,Inverse,MultiDimensional
其中,initialexpression是用大括号括起来的常量或ObjectScript表达式。
用户7741497
2022/07/07
2650
查询关键字WebMethod,CodeMode,Event,Final
Package.OriginalClass是包含web方法的类,QueryName是类查询的名称。
用户7741497
2022/07/07
3820
【收藏篇】Java关键字 及其 更详细介绍
private 关键字是访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量)。 只能在声明 private(内部)类、方法或字段的类中引用这些类、方法或字段。在类的外部或者对于子类而言,它们是不可见的。 所有类成员的默认访问范围都是 package 访问,也就是说,除非存在特定的访问控制修饰符,否则,可以从同一个包中的任何类访问类成员。
框架师
2019/09/19
7440
【收藏篇】Java关键字 及其 更详细介绍
【Java学习笔记之一】java关键字及作用
Java关键字及其作用 一、 总览: 1 访问控制 2 private protected public 3 4 类,方法和变量修饰符 5 abstract class extends final implements interface native new 6 static strictfp synchronized transient volatile 7 8 程序控制 9 break c
Angel_Kitty
2018/04/09
1.1K0
属性关键字Collection,Deprecated,Final,Identity
注意:属性类型可以是任何整数类型,例如%BigInt、%Integer、%SmallInt或%TinyInt。
用户7741497
2022/07/07
2940
类关键字PropertyClass,ServerOnly,Sharded,SoapBindingStyle
子类继承这个关键字添加的自定义行为。如果子类为关键字指定了一个值,则该值会指定一个或多个为该类的属性指定参数的附加类。
用户7741497
2022/07/06
4310
推荐阅读
相关推荐
Storage关键字SqlRowIdProperty,SqlTableNumber,State,StreamLocation,Type
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验