2014-01-16 28 views
1

在db2中,如何获取特定db模式的主键列表和相应的表名称?获取主键列表和相应的表名

我已经发现了一些查询从表像获得主键,

SELECT sc.name 
FROM SYSIBM.SYSCOLUMNS SC 
WHERE SC.TBNAME = 'REGISTRATION' 
AND sc.identity ='N' 
AND sc.tbcreator='schemaname' 
AND sc.keyseq=1 

我可以修改同样获得完整的主键,列名和表名,形成一个模式?

+0

你在哪个平台上运行DB2?您是在查找每个表中列的列表,还是查找每个表的主键中使用的列的列表? (有很大的区别) –

+0

我需要表名,主键名和列名。 – NaaN

+0

假设'sc.identity'是一个布尔(基本上)列,为什么要从列表中删除autogen/identity列?表格中的大多数主键都是精确的列类型。您是否在寻找自然(外部id)主键,而不是代理(代码,通常是数字)键? –

回答

1
  SELECT 
      tabschema, tabname, colname 
     FROM 
      syscat.columns 
     WHERE 
      keyseq IS NOT NULL AND 
      keyseq > 0 
     ORDER BY 
      tabschema, tabname, keyseq 
+0

我会接受这个答案。剩下的一个问题是我们不能在DB2中获得主键约束名称和列名吗? – NaaN

+1

哪个平台? [此博客条目](http://www.ibm.com/developerworks/data/library/techarticle/dm-0411melnyk/#constr)表明还有另一个表格包含此信息,但架构/表名称与您的问题提及不同,所以平台可能会有所不同。 –

+0

@ Clockwork-Muse:感谢您的博客。我对'DB2'很新,我没有得到'哪个平台?' – NaaN

相关问题