ibm-midrange - IBM i DB2 目录表/从物理文件中搜索唯一键
问题描述
我已经可以通过 IBM i Command DSPFD 获得我需要的信息。在假脱机文件的下方,我看到了我的 PF 的唯一信息,以及所有必要的关键字段(见下文,不幸的是,我们的 IBMi 的语言是德语)。
现在,我可以通过 DB2 中的目录表搜索这些信息吗?我需要查询的是 a) 表是否标记为 UNIQUE?b) 如果 a 为真,请告诉我那些 UNIQUE 关键字段。
例如,我可以显示我想要的表的列,这已经很棒了:syscolumns2 - Example-SQL:
SELECT c.* from qsys2.SYSCOLUMNS2 c
WHERE TRIM(UPPER(table_name)) = UPPER('GENPF510');
来源:https ://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/db2/rbafzcatalogtbls.htm
请注意,我无法通过 SYSKEYS 表获取我需要的信息,我已经检查过了 - 此表用于索引信息,在这种情况下,这些信息不适用于我的旧 PF(可以添加以加快查询访问)。
Spool-Datei anzeigen
Datei . . . . . : QPDSPFD Seite/Zeile 2/5
Steuerung . . . . Spalten 1 - 130
Suchen . . . . .
*...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9....+....0....+....1....+....2....+....3
Wartung des Zugriffspfads . . . . . . . . . : MAINT *IMMED
Eindeutige Schlüsselwerte erforderlich . . : UNIQUE Ja
Zugriffspfad aufgezeichnet . . . . . . . . : Nein
Zugriffspfad . . . . . . . . . . . . . . . : Geschlüsselt
Integritätsart . . . . . . . . . . . . . . : NONE
Anzahl der Schlüsselfelder . . . . . . . . : 1
Satzformat . . . . . . . . . . . . . . . . : GENPR510
Schlüsselfeld . . . . . . . . . . . . . . : ADRE10
Reihenfolge . . . . . . . . . . . . . . : Aufsteigend
Vorzeichen angegeben . . . . . . . . . : UNSIGNED
Zone/Ziffer angegeben . . . . . . . . . : *NONE
Alternative Sortierfolge . . . . . . . : Nein
Sortierfolge . . . . . . . . . . . . . . . : SRTSEQ *HEX
Sprachen-ID . . . . . . . . . . . . . . . . : LANGID DEU
Teildateibeschreibung
Teildatei . . . . . . . . . . . . . . . . . : MBR GENPF510
Teildateiebenen-ID . . . . . . . . . . . : 1010412225901
Erstellungsdatum der Teildatei . . . . . : 12.04.01
Text 'Beschreibung' . . . . . . . . . . . : TEXT Adresse /WH
Weitere ...
F3=Verlassen F12=Abbrechen F19=Links F20=Rechts F24=Weitere Tasten
解决方案
您正在寻找的信息可以在 QSYS.QADBXREF 中找到。
此 SQL 查询为您提供所有视图和逻辑文件及其键的列表。DBXUNQ = "U" 标记唯一键。
Select DBXFIL , f.DBKFLD, DBKPOS , t.DBXUNQ
from QSYS.QADBXREF t
INNER JOIN QSYS.QADBKFLD f on DBXFIL = DBKFIL and DBXLIB = DBKLIB
INNER JOIN QSYS.QADBFDEP d on d.DBFFDP = t.DBXFIL and d.DBFLIB=t.DBXLIB
where d.DBFFIL = 'GENPF510' and d.DBFLIB = 'YOURLIBRARY'
order by DBXFIL, DBKPOS
我使用 BRAIN AS / Infor AS 的时代已经一去不复返了。所以请原谅'YOURLIBRARY'占位符。
推荐阅读
- sql - Where 子句中的 OR 运算符不起作用
- appium-android - 使用 Python 在 Appium 中发送密钥不起作用
- reactjs - 如何动态添加 redux 中间件?
- c# - 使用 C# 创建一个文件并在其中写入
- java - JGit 状态未从现有存储库返回任何内容
- javascript - 侧边栏默认隐藏而不是显示
- docker - 如何使用 GUI 运行 docker-compose
- google-sheets - 如何解析单元格内的文本并使用 Google 表格中的代码返回某个字符串或值?
- laravel-8 - Laravel Livewire:无法在页面上捕获和抛出错误
- python - 如何做到这一点,以便当我输入字符串而不是浮点数时,它会打印出“请输入有效数字”