Как определить первичный ключ столбца в DB2 версии 7.1 - PullRequest
0 голосов
/ 03 октября 2018

Я использую DB2 версии 7.1 и пытаюсь запросить имя столбца первичного ключа для одного из моих требований.Я пробовал поискать в Google, но не смог получить ничего, связанного с DB2 7.1.

. Я мало что знаю о DB2, поэтому обращаюсь за помощью в поиске столбца первичного ключа из BD2 версии 7.1.Ждем положительной помощи в этом.

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

В зависимости от того, сколько лет приложению, вы не сможете найти его в своем каталоге 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 использовали исключительно физические и логические файлы, а не SQL-сущность базы данных DB2.

0 голосов
/ 03 октября 2018

Если вы используете Db2 для i-Series (ранее AS / 400), как предложено тегом db2-400, который вы поставили на вопрос, проверьте каталог QSYS2.SYSCST - в нем есть столбец CONSTRAINT_TYPE со значением 'P'для первичного ключа.Вам может потребоваться объединиться с другими объектами каталога (например, QSYS2.SYSTABLES, QSYS2.SYSCOLUMNS) в зависимости от деталей того, что вы ищете.

Центр знаний для Db2 для серии i R7.1 по-прежнему онлайн .

...