我无法在DB2中获取主键。我使用了以下代码,但这对我不起作用。
选择TBCREATOR,TBNAME,NAME,KEYSEQ 来自SYSIBM.SYSCOLUMNS 在哪里TBCREATOR ='DSN8710' AND TBNAME ='员工' AND KEYSEQ> 0 按KEYSEQ排序;
此代码中TBCREATOR的含义是什么?如何根据我的情况修改TBCREATOR值?
答案 0 :(得分:1)
我先回答你的上一个问题。 creator
有时被称为schema
。如果您熟悉Oracle,那么roughly analogous to a database user(虽然不完全正确)。
获取"主键"信息,你可能想知道哪个索引是"clustering" index(这通常是 ,但并不总是,确定磁盘上行的物理顺序)。
如何找到群集索引取决于您正在运行的平台:
SELECT
RTRIM(name) AS index_name
,RTRIM(creator) AS index_schema
,uniquerule
,clustering
FROM sysibm.sysindexes
WHERE tbname = @table
AND tbcreator = @schema
AND clustering = 'Y'
然后,要查看该索引中的实际列,请执行以下查询:
SELECT colname AS name
FROM sysibm.sysindexes a
JOIN sysibm.syskeys b
ON a.name = b.ixname
AND a.tbcreator = b.ixcreator
WHERE a.name = @index_name
AND a.tbcreator = @index_schema
ORDER BY COLSEQ
SELECT
RTRIM(indname) AS index_name
,RTRIM(indschema) AS index_schema
,uniquerule
,indextype
FROM syscat.indexes
WHERE tabname = @table
AND tabschema = @schema
AND indextype = 'CLUS'
然后,要查看该索引中的实际列,请执行以下查询:
SELECT colnames as name
FROM sysibm.sysindexes
WHERE name = @index_name
AND tbcreator = @index_schema
ORDER BY NAME
LUW将列列表作为一个字符串返回,由+
分隔,这有点奇怪......