第二十五章 SQL命令 CREATE VIEW(二)
通过视图更新
视图可用于更新视图所基于的表。可以通过视图插入新行,更新通过视图看到的行中的数据,以及删除通过视图看到的行。如果CREATE VIEW语句指定了此功能,则可以为视图发出INSERT、UPDATE和DELETE语句。要允许通过视图进行更新,请在定义视图时指定WITH CHECK选项(默认值)。
注意:如果视图基于分片表,则不能通过WITH CHECK OPTION视图进行INSERT、UPDATE或DELETE操作。
尝试这样做会导致一个SQLCODE -35,其中%msg INSERT/UPDATE/DELETE not allowed for view (sample.myview) based on sharded table with check option conditions。
若要防止通过视图进行更新,请指定WITH READ ONLY。尝试通过使用READ ONLY创建的视图执行插入、更新或删除操作会生成SQLCODE-35错误。
要通过视图进行更新,必须具有要更新表或视图的适当权限,如GRANT命令所指定。
通过视图更新受以下限制:
- 该视图不能是投影为视图的类查询。
- 视图的类不能包含类参数
READONLY=1。
第二十四章 SQL命令 CREATE VIEW(一)
创建视图
大纲
CREATE [OR REPLACE] VIEW view-name [(column-commalist)]
AS select-statement
[ WITH READ ONLY | WITH [level] CHECK OPTION ]
参数
view-name- 正在创建的视图的名称。有效的标识符,受与表名相同的附加命名限制。视图名称可以是限定的(schema.viewname),也可以是不限定的(Viewname)。未限定的视图名称采用默认架构名称。请注意,同一架构中的表和视图不能使用相同的名称。column-commalist- 可选-组成视图的列名、一个或多个有效标识符。如果指定,此列表括在圆括号中,列表中的项目用逗号分隔。AS select-statement- 定义视图的SELECT语句。WITH READ ONLY- 可选-指定不能通过此视图对视图所基于的表执行插入、更新或删除操作。默认情况下,允许通过视图执行这些操作,但要遵守下面描述的约束条件。WITH level CHECK OPTION- 可选-指定如何通过此视图对视图所基于的表执行插入、更新或删除操作。级别可以是关键字LOCAL或CASCADED
技术概要:使用 InterSystems 产品优化 SQL 性能使用 InterSystems SQL 优化查询使用 EXPLAIN 关键字显示查询计划在管理门户(Management Portal)中使用 SQL 查询接口显示查询计划发现查询计划结果中潜在的性能问题测试查询执行测试位片索引(Bitslice Index)的效果向交易类型字段(TransactionType Field)添加位图索引(Bitmap Index)重新测试查询性能查看随时间变化的查询性能了解有关 InterSystems SQL 的更多信息介绍材料
技术概要:使用 InterSystems 产品优化 SQL 性能
技术概要:使用 InterSystems 产品优化 SQL 性能
本技术概要(First Look)指南向您介绍了 InterSystems SQL 查询优化,包括查询分析工具的使用,几种索引方法以及随着时间的变化查看运行时统计数据的能力。
要浏览所有的技术概要(First Look),包括其他可以在免费的云实例或 web 实例上执行的技术概要(First Look),请参见 InterSystems First Looks(《InterSystems 技术概要》)。
本文档将帮助您使用 InterSystems IRIS®数据平台集成产品转换数据。
要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些, 请参见 InterSystems First Looks(《InterSystems 技术概要》)。
数据转换和互操作性
数据转换是 InterSystems IRIS 互操作性的核心。您可以改变从一个系统传入的数据的格式和内容,以满足下游系统的要求,从而允许系统之间进行通信。简单地说,从一个系统发送的信息可以转换为另一个应用程序可以理解的信息。使用 InterSystems IRIS,可以很容易地进行数据转换的创建、测试和维护。
假设您有两个包含产品价格的零售系统。当系统 A 向其他系统发送数据时,包含了不加税的产品基准价格。但是,系统 B 需要在价格中包含地区税。InterSystems IRIS 互操作性产品中的数据转换可以在将数据发送到系统 B 之前将从系统 A 收到的价格转换为加税价格。一旦定义,数据转换将自动处理修改。
常见的转换包括:
- 将值(value)从源信息复制到目标信息。
- 根据源信息的(value)执行计算,并将结果复制到目标信息。
- 为目标信息分配新的值(literal value)。
- 重新排列数据的顺序。
技术概要:ODBC 和 InterSystems 数据库
如果您希望在 InterSystems IRIS®数据平台上使用 ODBC,本文将介绍如何设置它。
要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems 技术概要(InterSystems First Looks)。
1 ODBC: 如何在 InterSystems IRIS 中使用它
InterSystems 提供了一个完全兼容的(ODBC 3.5)ODBC 驱动程序,您可以使用它通过 ODBC 访问 InterSystems IRIS 数据库。当您安装 InterSystems IRIS 时,默认安装该驱动程序。
为了开始在 InterSystems IRIS 中使用 ODBC,您只需要在 InterSystems IRIS 实例上配置驱动程序。本技术概要(First Look)文档对这一过程进行了概述。
如果您还不熟悉 ODBC,请参见本文档末尾的 "了解更多信息" 一节中的链接,以获得更多信息。
2 用前须知
要使用这个程序,您需要一个安装了 InterSystems IRIS 实例的 Windows 系统。
InterSystems IRIS 基础:连接一个 IDE
本文档告诉您如何快速连接您的集成开发环境(IDE),用于 ObjectScript、Java、.NET、Python 或 JavaScript/Node.js 的集成开发环境连接到 InterSystems IRIS® 的一个实例,并使用从 GitHub 下载的模板文件验证您是否已经成功连接。
此外,接下来的两节还包括以下内容:
• 部署 InterSystems IRIS
列出用于部署 InterSystems IRIS 的已授权和免费评估实例的选项。如果您还没有一个可以使用的实例,请查看本节。
• InterSystems IRIS 连接信息
详细介绍了将 IDE 连接到已授权或免费的 InterSystems IRIS 实例,以及以其他方式与之进行交互所需的信息 ,并解释了如何获得实例的信息。无论您想用哪个 IDE 连接到 InterSystems IRIS,都要查看涉及您所使用的实例类型的部分。
1 部署 InterSystems IRIS
本节涵盖了已授权的实例和免费的评估实例。
1.
第二十三章 SQL命令 CREATE USER
创建用户帐户。
大纲
CREATE USER user-name IDENTIFY BY password
CREATE USER user-name IDENTIFIED BY password
参数
user-name- 要创建的用户的名称。名称是最多128个字符的标识符。它可以包含Unicode字母。用户名不区分大小写。password- 此用户的密码。密码必须至少为3个字符,并且不能超过32个字符。密码区分大小写。密码可以包含Unicode字符。
描述
CREATE USER命令使用指定的密码创建用户帐户。
用户名可以是最多160个字符的任何有效标识符。用户名必须遵循标识符命名约定。用户名可以包含Unicode字符。用户名不区分大小写。
作为分隔标识符指定的用户名可以是SQL保留字,可以包含逗号(,)、句号(.)、插入符号(^)和两个字符的箭头序列(->)。
它可以以除星号(*)以外的任何有效字符开头。
IDENTIFY BY和IDENTIFIED BY关键字是同义词。
密码可以是数字文字、标识符或带引号的字符串。数字文字或标识符不必用引号括起来。带引号的字符串通常用于在密码中包含空格;带引号的密码可以包含除引号字符本身之外的任何字符组合。数字文字只能由0到9字符组成。
为什么要连接系统?
连接系统可以让一个系统处理来自非本系统的信息。例如,以下场景需要连接系统:
- 为了提高效率,最初设计为执行单一功能的系统需要集成。例如,您可以通过集成跟踪库存、订购材料、记录销售和控制运输的各个系统来提高效率。
- 系统合并后,在不同机构中执行相同功能的系统需要协同工作才能使统一的机构有效。
将系统连接在一起时,您可能会面临一些挑战,例如:
- 不同系统使用不同的通信协议:一个系统可能使用TCP,另一个系统使用SOAP,第三个系统使用REST。
- 不同系统使用不同格式或基于不同标准的不同消息。
- 需要保证消息成功传递到正确的系统,并能够检测和纠正故障。
- 必须监控传输消息的系统,如果一次消息过多,则为消息提供一个队列,并监控整体系统性能以确保没有任何障碍。
虽然可以编写自定义应用程序来连接系统,但开发一款InterSystems IRIS® 产品要容易得多,也快得多。
InterSystems IRIS 提供了一个框架,允许连接系统,并最大限度地减少或消除对自定义代码的需求。
Production介绍
InterSystems IRIS Production是一个集成框架,用于轻松连接系统和开发互操作性应用程序。产品Production提供包含各种消息格式和通信协议的内置连接。
技术概要(First Look)有助于您了解在InterSystems IRIS ®数据平台中如何使用SQL:标准的SQL功能、特有功能以及如何快速上手使用。
要体验技术概要(First Look)的所有内容 ,您可以在InterSystems IRIS的免费评估实例上执行相关操作 ,请参阅InterSystems First Looks(《InterSystems 技术概要》)。
1. InterSystems SQL: 特性和性能
InterSystems IRIS 提供高性能、功能完善的 SQL。在 InterSystems IRIS 中使用SQL,包括在单个CPU内核上运行查询,到使用数十个内核的CPU上并行执行查询,已至在InterSystems IRIS服务器集群上运行分布式查询。
在InterSystems IRIS中,可以使用 SQL 的范围包括:
- 联接(Joins)
- 灵活、高性能索引
- 聚合函数和分组
- 以SQL或InterSystems ObjectScript (以下简称“ObjectScript” )编写的存储过程
- JDBC和ODBC连接
- 自动并行查询
- 透明分布式查询
InterSystems SQL提供了强大的工具来实现最佳的SQL查询性能。
Object Script(四)
面向脚本
-
类
类的主要类型
|
类型
|
适用目的
|
|
Persistent
|
持久化对象, 够将对象保存到数据库中(写入磁盘),单独存储.
|
|
Serial
|
在持久化对象内部存储的对象,随持久化对象存储,不单独存储.
在给此对象中的属性赋值之前,不需要调用%New()来创建新的对象。如果此对象的属性包含在一个持久化类中,那么此对象的属性将被存储在持久化类的范围内。
|
|
Registered |
临时的类和对象,不持久化(方法会保存).
|
|
Abstract |
当类的属性被设置为abstract的时候,该类即被声明为抽象类,不能被实例化.
|
|
Datatype
|
数据类型,只包含数据验证和转换的方法.
|
|
CSP |
用于处理HTTP事件
|
类成员
|
类型
|
适用目的
|
|
Properties
|
一个属性包含类的一个实例的数据.
|
|
Methods
|
实例方法和类方法(在其他语言中称为静态方法)。 |
本文档介绍了如何使用 InterSystems JDBC 驱动程序连接到 InterSystems IRIS®数据平台实例,这样您就可以在 InterSystems IRIS 中使用 Java。
要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。
JDBC:如何在 InterSystems IRIS 中使用它
InterSystems 提供了完全兼容的(JDBC 4.2)、纯 Java、type 4 JDBC 驱动程序,它是一个独立的 JAR 文件,没有任何依赖性。如果您已经熟悉 JDBC,并且安装了 JDK 1.8,那么您需要做的就是将 JDBC 驱动程序添加到本地 CLASSPATH 中(请参见 JDBC:Exploring It [《JDBC:探索它》] )。JDBC URL(连接字符串)是:
jdbc:IRIS://ipAddress:superserverPort/namespace
其中的变量表示 InterSystems IRIS 实例主机的 IP 地址、实例的超级服务器端口和实例上的命名空间。
技术概要:ADO.NET 和 InterSystems 产品
本技术概要(First Look)解释了如何通过 InterSystems ADO.NET Managed Provider 连接到 InterSystems IRIS®数据平台。一旦根据本指南完成操作,就意味着您已经配置了一个 Visual Studio 项目来使用 InterSystems.Data.IRISClient.dll 程序集,建立了到 InterSystems IRIS 的 ADO.NET 连接,从您的 .NET 应用程序运行多个 SQL 语句,并在 InterSystems IRIS 系统管理门户(InterSystems IRIS System Management Portal)中确认这些语句的效果。
为了让您体验一下 ADO.NET Managed Provider,而又不陷入细节的困境,我们会确保这一探索简洁可行。这些活动被设计成只使用默认设置和功能,这样您就可以熟悉功能的基本原理,而不必处理那些离题或过于复杂的细节。当您将 ADO.NET 引入您的生产系统时,您可能需要做一些不同的事情。请确保不要把这种对 ADO.NET 的探索与真实的东西混淆起来! 本文档末尾提供的参考资料将使您对在生产中使用 ADO.NET 所涉及的内容有一个很好的了解。
有关 ADO.
技术概要:ObjectScript
技术概要:ObjectScript
本文档将向您介绍 ObjectScript 编程语言,并提供了几个示例,说明如何使用它来存储和检索来自 InterSystems IRIS®数据平台的数据。本技术概要(First Look)并不试图提供对该语言或其功能的全面概述。您可以使用本文件末尾列出的参考资料,继续您的探索。
要浏览所有的技术概要(First Look),包括可以在 InterSystems IRIS 免费的评估实例上执行的那些,请参见 InterSystems First Looks(《InterSystems 技术概要》)。
什么是 ObjectScript?
ObjectScript 是一种编程语言,用于在 InterSystems IRIS 数据平台上快速开发复杂的业务应用。ObjectScript 源代码被编译成 object 代码,该代码可针对业务应用程序中的典型操作(包括字符串操作和数据库访问)进行高度优化。
ObjectScript 的独特之处之一是它的底层存储结构,即所谓的 globals。Globals 可以被认为是持久的多维稀疏数组。ObjectScript 允许您直接从 globals 访问数据,但也允许您通过其本机 object 和 SQL 支持来访问这些数据。
1 安装基础知识:目的
本指南可帮助您成功在桌面或虚拟机上运行一个经授权许可的 InterSystems IRIS®。适用于我们在技术概要
(First Look)操作指南里所提及的技术。
我们提供的说明包括64位 Windows 10, Red Hat 企业版Linux7,以及Apple macOS10.13.
注: InterSystems 云管理器(ICM)提供了一种简单、直观的方法来配置云或虚拟基础架构,用户可在该基 础架构上部署所需的 InterSystems IRIS架构以及其他服务。
请勿使用本指南安装生产实例或任何自定义安装配置;如需帮助,请参阅InterSystems Cloud Manager Guide(《InterSystems 云管理器指南》)或Installation Guide(《安装指南》)。
2 用前须知
在开始安装 InterSystems IRIS之前,请确保:
• 计算机上的完整管理员权限或sudo权限。
• 访问InterSystems IRIS的单文件的可执行安装文件(Windows)或工具包(Linux和macOS)。 • 在IRIS可访问的文件夹下存放有效的许可证密钥文件,通常命名为iris.key。
您正在使用的技术概要(First Look)中对安装有特定要求;例如,可能需要“正常”安全性。
2021年9月13日,中国 北京—— 致力于帮助客户解决最关键的可扩展性、互操作性和速度问题的创新数据技术提供商InterSystems今日宣布在中国推出InterSystems IRIS医疗版互联互通套件,以满足医院信息化建设的标准化要求,促进业务协同,助力公立医院高效建设互联互通平台。
Object Script(三)
面向脚本
-
Routine
可将routine看做全局可调用的函数,一个函数是一个执行程序(Roution),它执行一个操作(例如,将一个字符串转换为其对应的ASCII码值)并且可以返回一个值。
语法结构:
Routine可以有一个标签,ObjectScript代码,以及结尾的注释,所有这些元素都是可选的。可以使用";"或"//"来表示注释。对于多行注释,用"/*"标记注释的开头,用 "*/"标记注释的结尾。
结构示例:
标签
ObjectScript代码
end
-
创建Routine示例
Studio创建:
打开Studio,点击左上角新建文件。选择General->ObjectScript Routine
将下段代码填写入建好的Routine。
hello ; hello world routine write !, "hello world" write !, "bye" end quit ; end
Terminal调用:
打开Terminal,执行下段代码,即可检查结果。
do ^hello 第二十二章 SQL命令 CREATE TRIGGER(二)
SQL触发器代码
如果LANGUAGE SQL(默认),被触发的语句是一个SQL过程块,包括一个SQL过程语句后跟一个分号,或者关键字BEGIN后跟一个或多个SQL过程语句,每个SQL过程语句后跟一个分号,最后以END关键字结束。
被触发的操作是原子的,它要么完全应用,要么根本不应用,并且不能包含COMMIT或ROLLBACK语句。
关键字BEGIN ATOMIC与关键字BEGIN是同义词。
如果语言是SQL, CREATE TRIGGER语句可以选择包含引用子句、WHEN子句和/或UPDATE OF子句。
UPDATE OF子句指定,只有在对为该触发器指定的一个或多个列执行UPDATE时,才应该执行该触发器。
带有LANGUAGE OBJECTSCRIPT的CREATE TRIGGER语句不能包含这些子句。
SQL触发器代码作为嵌入式SQL执行。
这意味着IRIS将SQL触发器代码转换为ObjectScript;
因此,如果查看与SQL触发器代码对应的类定义,将在触发器定义中看到Language=objectscript。
在执行SQL触发器代码时,系统会自动重置(NEWs)触发器代码中使用的所有变量。
在执行每条SQL语句之后 IRIS会检查SQLCODE
第二十一章 SQL命令 CREATE TRIGGER(一)
创建触发器
大纲
CREATE TRIGGER trigname {BEFORE | AFTER} event [,event]
[ORDER integer]
ON table
[REFERENCING {OLD | NEW} [ROW] [AS] alias]
action
参数
trigname- 要创建的触发器的名称,它是一个标识符。触发器名称可以是限定的,也可以是非限定的;如果限定,则其架构名称必须与表的架构名称匹配。BEFORE event,AFTER event- 事件执行触发器的时间(之前或之后)。 触发器事件或以逗号分隔的触发器事件列表。可用的事件列表选项包括INSERT、DELETE和UPDATE。 可以指定事件的单个更新。UPDATE OF子句后跟列名或逗号分隔的列名列表。仅当language为SQL时才能指定UPDATE OF子句。不能在逗号分隔的事件列表中指定UPDATE OF子句。ORDER integer- 可选-当具有相同时间和事件的表有多个触发器时,触发器的执行顺序。如果省略顺序,则为触发器分配的顺序为0。ON table- 为其创建触发器的表。
第二十章 SQL命令 CREATE TABLE AS SELECT
将现有表中的列定义和列数据复制到新表中。
大纲
CREATE TABLE table-name AS query [shard-key] [WITH table-option]
参数
table-name要创建的表的名称,指定为有效标识符。表名可以是限定的(schema.table),也可以是非限定的(Table)。未限定的表名采用缺省模式名。query为新表提供列定义和列数据的SELECT查询。此查询可以指定表、视图或多个联接的表。shard-key- 可选-切片键定义,由切片键本身或后跟附加切片键定义语法组成。WITH table-option- 可选-一个或多个表选项的逗号分隔列表,如%CLASSPARAMETER关键字后跟名称和关联的文字,或STORAGETYPE=ROW或STORAGETYPE=COLUMN。
描述
CREATE TABLE AS SELECT命令通过复制SELECT查询中指定的现有表(或多个表)中的列定义和列数据来创建新表。SELECT查询可以指定表或视图的任意组合。
注:CREATE TABLE AS SELECT COPPLICES FROM现有表定义。使用CREATE TABLE命令指定新的表定义。
第十九章 SQL命令 CREATE TABLE(六)
WITH子句,%CLASSPARAMETER关键字,STORAGETYPE关键字
可选的WITH子句可以在表格元素逗号结尾的圆括号之后和Shard Key定义(如果存在的话)之后指定。
WITH子句可以包含一个用逗号分隔的列表:
- 一个或多个
%CLASSPARAMETER子句。 STORAGETYPE子句
%CLASSPARAMETER子句
在WITH关键字之后,可以指定多个%CLASSPARAMETER关键字子句,每个子句定义一个类参数。
多个%CLASSPARAMETER子句子句之间用逗号分隔。
为了向后兼容,支持将%CLASSPARAMETER关键字子句指定为table-element-commalist中的元素。
在两个位置中指定相同的%CLASSPARAMETER关键字子句将产生SQLCODE -327错误。
%CLASSPARAMETER关键字后面跟着类参数名称、一个可选的等号和要分配给该类参数的文字值(字符串或数字)。
类参数总是定义为常数值。
因为用户可以用任何名称或值定义额外的类参数,所以只执行语法验证; 既不验证类参数是否存在,也不验证类参数的有效值。
第十八章 SQL命令 CREATE TABLE(五)
定义外键
外键是引用另一个表的字段;存储在外键字段中的值是唯一标识另一个表中的记录的值。此引用的最简单形式如下例所示,其中外键显式引用Customers表中的主键字段CustID:
CREATE TABLE Orders (
OrderID INT UNIQUE NOT NULL,
OrderItem VARCHAR,
OrderQuantity INT,
CustomerNum INT,
CONSTRAINT OrdersPK PRIMARY KEY (OrderID),
CONSTRAINT CustomersFK FOREIGN KEY (CustomerNum) REFERENCES Customers (CustID)
)
最常见的情况是,外键引用另一个表的主键字段。但是,外键可以引用RowID(ID)或标识列。在任何情况下,外键引用都必须存在于被引用的表中,并且必须定义为唯一的;被引用的字段不能包含重复值或NULL。
在外键定义中,可以指定:
- 字段名:
FOREIGN KEY (CustomerNum) REFERENCES Customers (CustID)
第十七章 SQL命令 CREATE TABLE(四)
唯一字段约束
唯一字段约束对多个字段的组合值施加唯一值约束。它具有以下语法:
CONSTRAINT uname UNIQUE (f1,f2)
此约束指定字段f1和f2的值组合必须始终是唯一的,即使这两个字段本身的值可能不是唯一的。可以为此约束指定一个、两个或多个字段。
此约束中指定的所有字段都必须在字段定义中定义。如果在此约束中指定的字段没有出现在字段定义中,则会生成SQLCODE-86错误。指定的字段应定义为非空。任何指定的字段都不应定义为唯一的,因为这会使指定此约束变得毫无意义。
字段可以按任何顺序指定。字段顺序指定相应索引定义的字段顺序。允许重复的字段名称。虽然可以在唯一字段约束中指定单个字段名称,但这与为该字段指定唯一数据约束在功能上是相同的。单字段约束确实提供了约束名称以供将来使用。
可以在表定义中指定多个唯一字段约束语句。约束语句可以在字段定义中的任何位置指定;按照惯例,它们通常放在已定义字段列表的末尾。
约束名称
Constraint关键字和唯一字段约束名称是可选的。以下各项在功能上等效:
CONSTRAINT myuniquefields UNIQUE (name,dateofbirth)
UNIQUE (name,dateofbirth)
约束名唯一地标识约束,并且还用于派生相应的索引名。
热烈祝贺中国参赛者John Pan 获得IRIS Analytics 开发者大赛第二名!!!
亲爱的社区开发者们,大家好!
InterSystems 开发者竞赛(InterSystems IRIS Analytics) 现已圆满结束!感谢大家的参与支持!
现在是揭晓优胜者的时刻了!
这些开发者和他们的应用程序赢得了雷鸣般的掌声:
亲爱的社区开发者们,大家好!
我们诚挚地邀请您参加与InterSystems开发者竞赛(InterSystems IRIS Analytics)竞赛优胜者交流 online meetup!
日期 & 时间: 美国东部时间2021年9月17日(周五)12:00;北京时间2021年9月18日(周六)0:00-1:00
在此次线上交流会上,您将了解到:
- 优胜者简介
- 优胜者提交项目的简短demo
- 关于项目中使用到的技术的开放探讨、问答,以及下一场开发者竞赛的安排。
第十六章 SQL命令 CREATE TABLE(三)
字段数据约束
数据约束控制字段允许使用的值、字段的默认值以及数据值使用的排序规则类型。所有这些数据约束都是可选的。可以按任何顺序指定多个数据约束,并以空格分隔。
NULL和NOT NULL
NOT NULL数据约束关键字指定该字段不接受空值;换句话说,每条记录都必须为该字段指定一个值。NULL和空字符串('') IRIS中是不同的值。可以在接受字符串的字段中输入空字符串,即使该字段定义了NOT NULL限制也是如此。不能在数值字段中输入空字符串。
NULL数据约束关键字显式指定此字段可以接受空值;这是字段的默认定义。
UNIQUE
唯一数据约束指定此字段仅接受唯一值。因此,没有两条记录可以包含该字段的相同值。SQL空字符串('')被视为数据值,因此在应用了UNIQUE数据约束的情况下,任何两条记录都不能包含此字段的空字符串值。NULL不被视为数据值,因此唯一数据约束不适用于多个NULL。要限制字段使用NULL,请使用NOT NULL关键字约束。
- 唯一数据约束要求指定字段的所有值都是唯一值。
UNIQUE fields constraint(使用CONSTRAINT关键字)要求一组指定字段的所有值在串联在一起时产生唯一值。不需要将各个字段限制为唯一值。
定义为分片表的表对UNIQUE数据约束的使用有额外的限制。
第十五章 SQL命令 CREATE TABLE(二)
全局临时表
指定GLOBAL TEMPORARY关键字将表定义为全局临时表。表定义是全局的(对所有进程都可用);表数据是临时的(在进程期间持续存在)。相应的类定义包含一个附加的类参数SQLTABLETYPE=“GLOBAL TEMPORARY”。与标准的 IRIS表一样,ClassType=Persistent,并且类包含Final关键字,表示它不能有子类。
无论哪个进程创建临时表,临时表的所有者都会自动设置为_PUBLIC。这意味着所有用户都可以访问缓存的临时表定义。例如,如果存储过程创建了一个临时表,则允许调用该存储过程的任何用户都可以访问该表定义。这仅适用于临时表定义;临时表数据特定于调用,因此只能由当前用户进程访问。
全局临时表的表定义与基表相同。全局临时表必须具有唯一的名称;尝试为其提供与现有基表相同的名称会导致SQLCODE-201错误。该表将一直存在,直到显式删除(使用DROP TABLE)。可以使用ALTER TABLE更改表定义。
下面的嵌入式SQL示例创建一个全局临时表:
ClassMethod CreateTable3()
{
d $SYSTEM.Security.针对新近面向中国推出的InterSystems IRIS医疗版互联互通套件,InterSystems将在9月17日(本周五)举办“InterSystems IRIS医疗版互联互通套件”线上发布会,会议详情如下,欢迎点击“此处”或扫描下方二维码报名。此次会议为邀请参会制,收到您的报名信息后,我们会及时与您确认参会资格并发送会议链接。
如何通过studio代码开发,实现生产界面的服务组件的服务注册功能
.png)



