文章目录
- 第四十章 持久对象和SQL - Object IDs
- Object IDs
- `ID`是如何确定的
- 访问 `ID`
第四十章 持久对象和SQL - Object IDs
Object IDs
每个对象在其所属的每个范围内都有一个唯一的 ID
。在大多数情况下,使用此 ID 来处理对象。此 ID
是类中 %Persistent
的以下常用方法的参数:
%DeleteId()
%ExistsId()
%OpenId()
该类还有其他使用 ID
的方法。
ID
是如何确定的
当首次保存对象时,会分配 ID
值。该任务是永久性的;无法更改对象的 ID
。当删除或更改其他对象时,不会为对象分配新的 ID
。
任何ID
在其范围内都是唯一的。
对象的 ID
确定如下:
- 对于大多数类,默认情况下,
ID
是在保存该类的对象时按顺序分配的整数。 - 对于在父子关系中用作子类的类,
ID
的构成如下:
parentID||childID
其中,parentID
是父对象的 ID
,childID
是子对象在未在父子关系中使用时将收到的 ID
。例子:
104||3
该 ID
是已保存的第三个子 ID
,其父 ID
在其自己的范围内具有 ID
104
。
- 如果该类具有
IdKey
类型的索引并且该索引位于特定属性上,则该属性值将用作ID
。
SKU-447
此外,属性值无法更改。
- 如果该类具有
IdKey
类型的索引,并且该索引位于多个属性上,则这些属性值将连接起来形成ID
。例如:
CATEGORY12||SUBCATEGORYA
.
此外,这些属性值无法更改。
访问 ID
要访问对象的 ID
值,请使用该对象从 %Persistent
继承的 %Id()
实例方法。
SAMPLES>set person=##class(Sample.Person).%OpenId(2)
SAMPLES>write person.%Id()
2
>>> person = iris.cls("Sample.Person")._OpenId(2)
>>> print(person._Id())
2
在 SQL
中,对象的 ID
值可用作名为 %Id
的伪字段。请注意,当在管理门户中浏览表时,%Id
伪字段会显示标题 ID
:
尽管有这个标题,伪字段的名称是 %Id
。