如何在DB2 7.1版中识别主键列

时间:2018-10-03 07:19:27

标签: db2 db2-400

我正在使用DB2版本7.1,并尝试查询主键列名来满足我的要求之一。我尝试使用Google搜索,但无法获得与DB2 7.1相关的任何信息。

我对DB2不太了解,因此寻求帮助来查找BD2 7.1版的主键列。期待对此有积极的帮助。

2 个答案:

答案 0 :(得分:2)

如果按照问题上的db2-400标记的建议将Db2用于i系列(以前为AS / 400),请检查目录QSYS2.SYSCST-它具有CONSTRAINT_TYPE列,其值为'P'用于主键。您可能需要结合其他目录对象(例如QSYS2.SYSTABLES,QSYS2.SYSCOLUMNS),这取决于您要查找的内容的详细信息。

i系列R7.1的Db2的知识中心仍为online

答案 1 :(得分:0)

根据应用程序的年代,您可能无法在SQL目录中找到它。不幸的是,许多(大多数?)RPG应用程序没有使用DB2数据库的全部功能,包括索引,视图和约束。这个变化很慢,但是很可能您将不得不寻找具有唯一密钥的逻辑文件。可能没有定义主键。您可以在SQL目录中查找,但是如果找不到所需的内容,则以下内容可能会有所帮助。

  1. 使用DSPDBR <table name>查找与物理文件(表)关联的逻辑文件。如果您不知道命令行的外观,可以按F4键提示输入参数。

  2. 如果可以找到逻辑文件的源(可能在源文件QDDSSRC中),请检查该源,并在记录格式行上方使用关键字UNIQUE,则可以认为这是一个主键或至少一个唯一键。确保在源底部没有记录选择。可能会有多个这样的逻辑文件。

  3. 确定逻辑文件是否具有唯一密钥的另一种方法是使用DSPFD <logical file>命令。然后在显示的屏幕中搜索“唯一”。屏幕应该看起来像这样:

File  . . . . . :   QPDSPFD                                             
Control . . . . .   __________                                                     
Find  . . . . . .   Unique                                              
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7..  
   Access path maintenance . . . . . . . . . . : MAINT      *IMMED      
   Unique key values required  . . . . . . . . : UNIQUE     Yes         
   Select/omit specified . . . . . . . . . . . :            No          
   Access path journaled . . . . . . . . . . . :            No          
   Access path . . . . . . . . . . . . . . . . :            Keyed       
   Number of key fields  . . . . . . . . . . . :              3         
   Record format . . . . . . . . . . . . . . . :            JCNCXR      
     Key field . . . . . . . . . . . . . . . . :            XFNCMNO     
       Sequence  . . . . . . . . . . . . . . . :            Ascending   
       Sign specified  . . . . . . . . . . . . :            SIGNED      
       Zone/digit specified  . . . . . . . . . :            *NONE       
       Alternative collating sequence  . . . . :            No          
     Key field . . . . . . . . . . . . . . . . :            XFJOBYR     
       Sequence  . . . . . . . . . . . . . . . :            Ascending   
       Sign specified  . . . . . . . . . . . . :            SIGNED      
       Zone/digit specified  . . . . . . . . . :            *NONE       
       Alternative collating sequence  . . . . :            No          
     Key field . . . . . . . . . . . . . . . . :            XFJOBNO     
       Sequence  . . . . . . . . . . . . . . . :            Ascending   

Unique key values required . . . . . . . . : UNIQUE Yes表示逻辑文件包含唯一密钥。下一行Select/omit specified . . . . . . . . . . . : No表示逻辑文件中没有记录选择逻辑,因此它包含物理文件中的所有记录。底部的线按顺序显示了关键字段。这与逻辑文件所获得的主键非常接近。由于与物理文件相关的每个逻辑文件都可以具有唯一的密钥,因此大多数应用程序将使用命名来标识哪个是主密钥,有时这是文件名上的L00或L01后缀。

更复杂的是,物理文件本身可以唯一地键入密钥。您可以查看来源,也可以使用DSPFD <physical file>确定来源。

这些是关于DB2 for i的一些独特特性,而其他DB2风格则没有。而且,过去RPG程序员仅使用物理和逻辑文件,而不是使用DB2数据库的SQL性质。