当前位置:网站首页>属性关键字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
关键字。
默认
如果省略此关键字,则不需要该属性。
边栏推荐
- 【服务器数据恢复】某品牌StorageWorks服务器raid数据恢复案例
- PLC:自动纠正数据集噪声,来洗洗数据集吧 | ICLR 2021 Spotlight
- Oracle Linux 9.0 正式发布
- 最长上升子序列模型 AcWing 482. 合唱队形
- 一个程序员的水平能差到什么程度?尼玛,都是人才呀...
- 【愚公系列】2022年7月 Go教学课程 005-变量
- oracle 非自动提交解决
- UML 顺序图(时序图)
- Data connection mode in low code platform (Part 2)
- First choice for stock account opening, lowest Commission for stock trading account opening, is online account opening safe
猜你喜欢
KITTI数据集简介与使用
The longest ascending subsequence model acwing 1012 Sister cities
Simple use of websocket
GAN发明者Ian Goodfellow正式加入DeepMind,任Research Scientist
设备故障预测机床故障提前预警机械设备振动监测机床故障预警CNC震动无线监控设备异常提前预警
2022PAGC 金帆奖 | 融云荣膺「年度杰出产品技术服务商」
数据湖(九):Iceberg特点详述和数据类型
Notes de l'imprimante substance: paramètres pour les affichages Multi - écrans et multi - Résolutions
JS get the current time, month, day, year, and the uniapp location applet opens the map to select the location
一个简单LEGv8处理器的Verilog实现【四】【单周期实现基础知识及模块设计讲解】
随机推荐
AutoCAD - how to input angle dimensions and CAD diameter symbols greater than 180 degrees?
设备故障预测机床故障提前预警机械设备振动监测机床故障预警CNC震动无线监控设备异常提前预警
GAN发明者Ian Goodfellow正式加入DeepMind,任Research Scientist
STM32CubeMX,68套组件,遵循10条开源协议
Excuse me, does PTS have a good plan for database pressure measurement?
The longest ascending subsequence model acwing 1012 Sister cities
oracle 触发器实现级联更新
Cvpr2022 | backdoor attack based on frequency injection in medical image analysis
ARM Cortex-A9,MCIMX6U7CVM08AD 处理器应用
Transferring files between VMware and host
Data connection mode in low code platform (Part 2)
MLGO:Google AI发布工业级编译器优化机器学习框架
常用數字信號編碼之反向不歸零碼碼、曼徹斯特編碼、差分曼徹斯特編碼
Wired network IP address of VMware shared host
GVIM [III] [u vimrc configuration]
PD虚拟机教程:如何在ParallelsDesktop虚拟机中设置可使用的快捷键?
Horizontal of libsgm_ path_ Interpretation of aggregation program
2022pagc Golden Sail award | rongyun won the "outstanding product technology service provider of the year"
C # switch pages through frame and page
Docker deploy Oracle