当前位置:网站首页>属性关键字OnDelete,Private,ReadOnly,Required
属性关键字OnDelete,Private,ReadOnly,Required
2022-07-07 12:38:00 【用户7741497】
第105章 属性关键字 - OnDelete
指定删除相关对象时在当前表中采取的操作。此关键字仅适用于将基数Cardinality
指定为“父”或“一”的关系属性。它的使用在所有其他上下文中都是无效的。
用法
要指定删除相关对象时在当前表中采取的操作,请使用以下语法:
Relationship relname As classname [ Cardinality = cardinality, Inverse = inverse, OnDelete = ondelete ];
其中ondelete
是以下值之一。在本讨论中,相关记录是属于关系另一方的记录或对象,引用记录是关系这一方的记录或对象。
cascade
级联—删除相关记录时,也会删除该表中的引用记录。noaction
无操作—当试图删除相关记录时,尝试会失败。setdefault
—删除相关记录时,该表中的引用记录将被设置为其默认值。setnull
—删除相关记录时,该表中的引用记录将被设置为null
。
详解
此关键字定义了在关系的另一端删除记录时发生的引用操作。
默认
如果忽略此关键字,则:
- 对于
Cardinality
基数为父的关系,OnDelete
是级联的。也就是说,当删除父记录时,默认情况下,关联的子记录将被删除。 - 对于基数为1的关系,
OnDelete
为noaction
。也就是说,当试图删除“一个”记录时,默认情况下,如果另一个表有任何指向它的记录,尝试就会失败。
示例
Class MyApp.Employee Extends %Persistent {
...
Relationship Employer As MyApp.Company [ Cardinality = one, Inverse = Employees, OnDelete = cascade ];
}
这个例子显示了公司和员工之间的一对多关系。 如图所示,Cardinality
表示公司是关系的“one”
,而OnDelete
表示删除公司对其员工的影响。 由于OnDelete
的值是cascade
,当删除一个公司时,它的效果是级联的,员工也会被删除。
第106章 属性关键字 - Private
指定属性是否私有(只能由该类或其子类的方法使用)。
用法
要指定属性为私有,请使用以下语法:
Property name As classname [ Private ];
否则,忽略该关键字或将Not
放在该关键字之前。
详解
私有类成员只能由该类(或其子类)的方法使用。
在目录信息中不显示私有属性,并且不是由SELECT *
查询返回的。 但是,可以在SQL查询中显式地引用和使用私有属性。
子类继承Private
关键字的值,不能重写它。
在IRIS中,私有属性总是被继承的,并且对定义属性的类的子类可见;其他语言经常调用这些受保护的属性。
默认
如果省略此关键字,则此属性不是私有的。
第107章 属性关键字 - ReadOnly
指定属性是只读的,这限制了其值的设置方式。
用法
要指定属性为只读,请使用以下语法:
Property name As classname [ ReadOnly ];
否则,省略此关键字或将单词Not
放在关键字的前面。
重要提示:不要在集合属性中使用ReadOnly
关键字。
详解
此关键字指定不能通过使用对象引用来设置该属性的值。如果使用对象引用设置只读属性的值,例如:
set oref.Name = "newvalue"
那么在运行时会出现<CANNOT SET THIS PROPERTY>
错误。
同样,当属性被定义为只读时,相应的SQL表中的字段也被定义为只读。不能通过SQL语句显式插入或更新只读字段。尝试这样做将导致SQL错误,SQLCODE
为-138
。
可以通过以下方式指定只读属性的值:
- 通过
InitialExpression
关键字。 - 通过
SQLComputeCode
关键字。
请注意,这些技术都有特定的限制。
注意
如果属性被标记为只读和必需 required
,请注意对象访问和SQL访问之间的以下行为差异:
- 当保存对象时, IRIS不会验证属性。这意味着 IRIS忽略了该属性的
Required
关键字。 - 当插入或更新记录时, IRIS会属性的
Required
关键字。
默认
如果省略此关键字,则属性不是只读的。
第108章 属性关键字 - Required
对于持久性类,指定属性的值必须先给定一个值,然后才能存储到磁盘。对于启用了XML
的类,指定属性映射到的元素是必需的。
用法
要指定属性是必需required
的,请使用以下语法:
Property name As classname [ Required ];
否则,省略此关键字或将单词Not
放在关键字的前面。
详解
对于持久类,此关键字指定在包含对象可以存储到磁盘之前,必须给属性一个值;如果属性没有值,则会发生错误。
- 如果属性的类型为
%Stream
,则流不能为空流。也就是说,如果%IsNull()
方法返回0,则认为流属性具有值。 - 对于扩展
%XML.Adaptor
的类,此关键字影响相应的XML
架构。如果属性被标记为REQUIRED
,则模式中的相应元素没有minOccurs=“0”
,因此被认为是必需的。
在子类中,可以将可选属性标记为必需,但不能反之亦然。
注意
如果属性被标记为只读和必需 required
,请注意对象访问和SQL访问之间的以下行为差异:
- 当保存对象时, IRIS不会验证属性。这意味着 IRIS忽略了该属性的
Required
关键字。 - 当插入或更新记录时, IRIS会属性的
Required
关键字。
默认
如果省略此关键字,则不需要该属性。
边栏推荐
- STM32CubeMX,68套组件,遵循10条开源协议
- Leetcode——剑指 Offer 05. 替换空格
- 数据湖(九):Iceberg特点详述和数据类型
- [Reading stereo matching papers] [III] ints
- 寺岗电子称修改IP简易步骤
- 常用數字信號編碼之反向不歸零碼碼、曼徹斯特編碼、差分曼徹斯特編碼
- Csma/cd carrier monitoring multipoint access / collision detection protocol
- Docker deploy Oracle
- NLLB-200:Meta开源新模型,可互译200种语言
- Excuse me, when using Flink SQL sink data to Kafka, the execution is successful, but there is no number in Kafka
猜你喜欢
The longest ascending subsequence model acwing 482 Chorus formation
多商户商城系统功能拆解01讲-产品架构
Navigation - are you sure you want to take a look at such an easy-to-use navigation framework?
Substance Painter笔记:多显示器且多分辨率显示器时的设置
最长上升子序列模型 AcWing 1012. 友好城市
2022PAGC 金帆奖 | 融云荣膺「年度杰出产品技术服务商」
内部排序——插入排序
Hands on Teaching: XML modeling
Selenium Library
Codes de non - retour à zéro inversés, codes Manchester et codes Manchester différentiels couramment utilisés pour le codage des signaux numériques
随机推荐
Beginner JSP
Notes de l'imprimante substance: paramètres pour les affichages Multi - écrans et multi - Résolutions
docker部署oracle
bashrc与profile
Navigation - are you sure you want to take a look at such an easy-to-use navigation framework?
CVPR2022 | 医学图像分析中基于频率注入的后门攻击
c#通过frame 和 page 切换页面
设备故障预测机床故障提前预警机械设备振动监测机床故障预警CNC震动无线监控设备异常提前预警
Verilog implementation of a simple legv8 processor [4] [explanation of basic knowledge and module design of single cycle implementation]
ES日志报错赏析-- allow delete
6、Electron无边框窗口和透明窗口 锁定模式 设置窗口图标
wpf dataGrid 实现单行某个数据变化 ui 界面随之响应
【网络安全】sql注入语法汇总
课设之百万数据文档存取
请问,在使用flink sql sink数据到kafka的时候出现执行成功,但是kafka里面没有数
Mrs offline data analysis: process OBS data through Flink job
Introduction to sakt method
ARM Cortex-A9,MCIMX6U7CVM08AD 处理器应用
IP address home location query full version
libSGM的horizontal_path_aggregation程序解读