DB2/400是否存在ROWID数据类型?求等效ROW ID列查询语句
DB2/400中查询ROWID列及类型确认
首先明确回答:DB2 for i(原DB2/400)确实支持ROWID数据类型。它是一个固定长度的二进制类型(16字节),用于唯一标识表中的每一行——你可以显式定义该列,系统也可能为没有主键/唯一约束的表自动生成隐含的ROWID(这种隐含列不会在常规查询中显示)。
对应SQL Server的ROWID列查询语句
如果你要查找指定表中显式定义的ROWID列,可以查询系统视图QSYS2.SYSCOLUMNS,等效语句如下:
SELECT TABLE_NAME AS ObjectName, COLUMN_NAME AS IdentityColumn FROM QSYS2.SYSCOLUMNS WHERE DATA_TYPE = 'ROWID' AND TABLE_SCHEMA = '你的库/模式名' -- 替换为实际的库名,比如你的表所在的LIB AND TABLE_NAME = 'Table_Name'; -- 替换为目标表名
额外补充:区分ROWID与自增列
注意:你提到的SQL Server语句实际是查询自增IDENTITY列,而DB2/400的ROWID和IDENTITY不是同一个概念。如果你的真实需求是找DB2/400中的自增列(即GENERATED ALWAYS AS IDENTITY定义的列),可以用这条语句:
SELECT TABLE_NAME AS ObjectName, COLUMN_NAME AS IdentityColumn FROM QSYS2.SYSCOLUMNS WHERE IS_IDENTITY = 'YES' AND TABLE_SCHEMA = '你的库/模式名' AND TABLE_NAME = 'Table_Name';
判断表是否有隐含ROWID
如果需要确认某张表是否存在系统自动生成的隐含ROWID,可以查询QSYS2.SYSTABLES视图:
SELECT TABLE_NAME, HAS_ROWID FROM QSYS2.SYSTABLES WHERE TABLE_SCHEMA = '你的库/模式名' AND TABLE_NAME = 'Table_Name';
返回的HAS_ROWID值为Y则表示该表有隐含ROWID。
内容的提问来源于stack exchange,提问作者Jchristophe Cherid
相关产品推荐
相关产品推荐

