无主键/唯一键/复合键的AS400数据库如何唯一标识记录?
IBM i(原AS400)中类似Oracle ROWID的机制及自定义方案
内置类似ROWID的机制:相对记录号(RRN)
IBM i的物理文件(对应关系型数据库的表)自带相对记录号(Relative Record Number, RRN),和Oracle的ROWID作用类似,是系统为每条记录自动分配的唯一标识,无需用户定义主键或唯一键。
- RRN的特性:
- 每个物理文件中的记录都有唯一的RRN,即使记录被删除,空缺的RRN不会被复用(除非重建文件)
- 由系统自动维护,不需要额外的存储或维护成本
- 获取RRN的方式:使用
RRN()函数,示例SQL:
SELECT RRN(你的表名), * FROM 你的表名;
自定义类似ROWID的标识方案
如果内置RRN不符合需求,也可以手动创建唯一标识字段,常见方案有两种:
1. 自增身份字段
通过GENERATED ALWAYS AS IDENTITY定义自增列,系统会自动为新插入的记录分配唯一递增数值,示例创建表语句:
CREATE TABLE 你的表名 ( 唯一标识列 INT GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1), 其他字段1 VARCHAR(50), 其他字段2 DATE, ... );
2. UUID全局唯一标识
使用SYS_GUID()函数生成UUID(全局唯一标识符),适合分布式场景或需要跨系统唯一标识的情况,示例创建表语句:
CREATE TABLE 你的表名 ( 唯一标识列 CHAR(36) GENERATED ALWAYS AS (SYS_GUID()), 其他字段1 VARCHAR(50), 其他字段2 DATE, ... );
内容的提问来源于stack exchange,提问作者Seriously
相关产品推荐
相关产品推荐

