当前位置:网站首页>属性关键字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关键字。
默认
如果省略此关键字,则不需要该属性。
边栏推荐
- The longest ascending subsequence model acwing 1012 Sister cities
- 请问,redis没有消费消息,都在redis里堆着是怎么回事?用的是cerely 。
- Navigation — 这么好用的导航框架你确定不来看看?
- First choice for stock account opening, lowest Commission for stock trading account opening, is online account opening safe
- IP address home location query
- Excuse me, does PTS have a good plan for database pressure measurement?
- docker部署oracle
- 用例图
- gvim【三】【_vimrc配置】
- c#通过frame 和 page 切换页面
猜你喜欢

Notes de l'imprimante substance: paramètres pour les affichages Multi - écrans et multi - Résolutions

gvim【三】【_vimrc配置】

Use case diagram

【服务器数据恢复】某品牌StorageWorks服务器raid数据恢复案例

UML state diagram

小程序目录结构

小米的芯片自研之路

Data flow diagram, data dictionary

AutoCAD - how to input angle dimensions and CAD diameter symbols greater than 180 degrees?

Equipment failure prediction machine failure early warning mechanical equipment vibration monitoring machine failure early warning CNC vibration wireless monitoring equipment abnormal early warning
随机推荐
IP and long integer interchange
数据湖(九):Iceberg特点详述和数据类型
Navigation - are you sure you want to take a look at such an easy-to-use navigation framework?
杭电oj2092 整数解
[network security] SQL injection syntax summary
wpf dataGrid 实现单行某个数据变化 ui 界面随之响应
Similarities and differences between switches and routers
Bashrc and profile
属性关键字ServerOnly,SqlColumnNumber,SqlComputeCode,SqlComputed
数据流图,数据字典
ARM Cortex-A9,MCIMX6U7CVM08AD 处理器应用
UML state diagram
Vscode configuration uses pylint syntax checker
Simple use of websocket
小程序目录结构
Seven propagation behaviors of transactions
ES日志报错赏析-maximum shards open
ES日志报错赏析-- allow delete
js 获取当前时间 年月日,uniapp定位 小程序打开地图选择地点
Leetcode——236. The nearest common ancestor of binary tree