如何在 DB2 中的 table 上查找主键?
How to find primary key on a table in DB2?
我无法在 DB2 中获取主键。我使用了以下代码,但它对我不起作用。
SELECT TBCREATOR、TBNAME、名称、KEYSEQ
来自 SYSIBM.SYSCOLUMNS
其中 TBCREATOR = 'DSN8710'
和 TBNAME = 'EMPLOYEE'
和键序列 > 0
按 KEYSEQ 排序;
这段代码中的TBCREATOR是什么意思,如何根据我的情况修改TBCREATOR的值?
我先回答你最后一个问题。 creator
有时被称为 schema
。如果您熟悉 Oracle,这是 roughly analogous to a database user(尽管不完全是)。
就获取 "primary key" 信息而言,您可能想知道哪个索引是 "clustering" index(通常,但并非总是如此, 确定磁盘上行的物理顺序)。
如何找到聚类索引取决于您使用的平台 运行:
大型机(z/OS):
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
Linux/Unix/Windows:
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 returns 列列表作为一个字符串,由 +
分隔,这有点奇怪...
我无法在 DB2 中获取主键。我使用了以下代码,但它对我不起作用。
SELECT TBCREATOR、TBNAME、名称、KEYSEQ 来自 SYSIBM.SYSCOLUMNS 其中 TBCREATOR = 'DSN8710' 和 TBNAME = 'EMPLOYEE' 和键序列 > 0 按 KEYSEQ 排序;
这段代码中的TBCREATOR是什么意思,如何根据我的情况修改TBCREATOR的值?
我先回答你最后一个问题。 creator
有时被称为 schema
。如果您熟悉 Oracle,这是 roughly analogous to a database user(尽管不完全是)。
就获取 "primary key" 信息而言,您可能想知道哪个索引是 "clustering" index(通常,但并非总是如此, 确定磁盘上行的物理顺序)。
如何找到聚类索引取决于您使用的平台 运行:
大型机(z/OS):
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
Linux/Unix/Windows:
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 returns 列列表作为一个字符串,由 +
分隔,这有点奇怪...