Maximo 中的 ASSET table 是否有主键?

Does the ASSET table in Maximo have a primary key?

I'm trying to determine if the asset table in Maximo 7.6.1.1 has a primary key (query source):

SELECT cols.table_name, cols.column_name, cols.position, cons.status, cons.owner
FROM all_constraints cons, all_cons_columns cols
WHERE cols.table_name = 'ASSET'
AND cons.constraint_type = 'P'
AND cons.constraint_name = cols.constraint_name
AND cons.owner = cols.owner
ORDER BY cols.table_name, cols.position;

[0 records returned]

令我惊讶的是查询在此 table 中没有找到主键。

Maximo中的ASSETtable是否有主键?还是查询有问题?


编辑:

现在我查看 Toad 中的 table 属性,我发现它 清楚地指出 asset table:

Assetnum 是关键字段。

Maximo 使用了很少的数据库扩展功能,而是使用 MBO(maximo 业务对象/java 后端)来处理和控制关键字段和关系。在 maximo 中,您可以通过查看系统配置> 平台配置> 数据库配置并打开所需的 table 来找到关键字段。那里也定义了关系。

Maximo 不使用数据库 PK 功能,而是使用不同的唯一索引和应用复合 PK,您可以通过查看 MAXATTRIBUTE.PRIMARYKEYCOLSEQ 字段找到它们。

示例 SQL 对于 ASSET,适用的主键将是 SITEID,ASSETNUM:

select ATTRIBUTENAME,PRIMARYKEYCOLSEQ from maxattribute where primarykeycolseq is not null and objectname='ASSET' ORDER BY PRIMARYKEYCOLSEQ;

您还会为每个持久对象找到一个唯一索引,该索引绑定到单个 BIGINT 属性,该属性由 Oracle 中的序列对象填充。相应的属性通常是 table 名称后跟 "ID"。

示例: 对于 WORKORDER,该属性是 WORKORDERID。您可以通过这样的查询找到索引:

select * from maxsysindexes where tbname='WORKORDER' and required=1;

并且您可以通过查看使用 Oracle SQL Dev 等工具或使用如下查询找到的索引来识别属性:

SELECT COLNAME FROM MAXSYSKEYS WHERE IXNAME=(select NAME from maxsysindexes where tbname='WORKORDER' and required=1);