当前位置:网站首页>属性关键字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关键字。
默认
如果省略此关键字,则不需要该属性。
边栏推荐
- Oracle non automatic submission solution
- Leetcode - Sword finger offer 05 Replace spaces
- Bashrc and profile
- Excuse me, when using Flink SQL sink data to Kafka, the execution is successful, but there is no number in Kafka
- Transferring files between VMware and host
- UML 状态图
- 杭电oj2054 A == B ? ???
- 昇腾体验官第五期随手记I
- MRS离线数据分析:通过Flink作业处理OBS数据
- 解析PHP跳出循环的方法以及continue、break、exit的区别介绍
猜你喜欢

UML state diagram

常用数字信号编码之反向不归零码码、曼彻斯特编码、差分曼彻斯特编码

GAN发明者Ian Goodfellow正式加入DeepMind,任Research Scientist

云上“视界” 创新无限 | 2022阿里云直播峰会正式上线

KITTI数据集简介与使用

Cvpr2022 | backdoor attack based on frequency injection in medical image analysis

Applet directory structure

小程序目录结构
![Verilog implementation of a simple legv8 processor [4] [explanation of basic knowledge and module design of single cycle implementation]](/img/d3/20674983717d829489149b4d3bfedf.png)
Verilog implementation of a simple legv8 processor [4] [explanation of basic knowledge and module design of single cycle implementation]

低代码平台中的数据连接方式(下)
随机推荐
课设之百万数据文档存取
UML sequence diagram (sequence diagram)
最长上升子序列模型 AcWing 1012. 友好城市
Selenium Library
Ascend 910实现Tensorflow1.15实现LeNet网络的minist手写数字识别
Demis Hassabis谈AlphaFold未来目标
请问,在使用flink sql sink数据到kafka的时候出现执行成功,但是kafka里面没有数
常用数字信号编码之反向不归零码码、曼彻斯特编码、差分曼彻斯特编码
Leetcode——236. The nearest common ancestor of binary tree
Excuse me, when using Flink SQL sink data to Kafka, the execution is successful, but there is no number in Kafka
潘多拉 IOT 开发板学习(HAL 库)—— 实验12 RTC实时时钟实验(学习笔记)
Parsing of XML files
杭电oj2092 整数解
LeetCode 648. 单词替换
请问,PTS对数据库压测有好方案么?
Pert diagram (engineering network diagram)
通过 iValueConverter 给datagrid 的背景颜色 动态赋值
搜索引擎接口
docker部署oracle
半小时『直播连麦搭建』动手实战,大学生技术岗位简历加分项get!