PDA

View Full Version : Primary Key in SYSCOLUMNS ?



Seiten : [1] 2

a.wojcik
28-07-16, 13:12
Hallo *ALL,

ich brauche die Key Felder aus einer Datei zu ermitteln.
Laut IBM gibt es in der SYSCOLUMNS ein Feld Namens KEYSEQ :

SELECT NAME, KEYSEQ FROM SYSIBM.SYSCOLUMNS
WHERE TBNAME = 'TABLE_NAME' AND KEYSEQ > 0
ORDER BY KEYSEQ
Auf unserer Maschine ist die Datei
SYSCOLUMNS aber in der QSYS2
und da gibt es das Feld
KEYSEQ nicht.
Wo stehen die Keys sonst dann ?
Wer hat 'ne Idee dazu, wie kann man das per SQL sonst lösen ?

Gruß
A.W.

Fuerchau
28-07-16, 13:19
select * from syskeys
where index_name = 'AAA' and index_schema = 'MYLIB'

a.wojcik
28-07-16, 13:39
Hallo Fuerhau,
wäre richtig, aber in der Datei habe ich nur die Index Dateien, nicht die physischen.

Fuerchau
28-07-16, 13:53
Wenn tatsächlich als Constraint "Primary Key" definiert, dann sollte es in der SYSCST oder SYSKEYCST stehen.

Fuerchau
28-07-16, 13:57
Schau einfach mal in der QSYS2-Lib in die diversen SYSxxx-Views oder ins SQL-Handbuch.

a.wojcik
28-07-16, 14:05
Tja, ich habe schon (fast) alle SYSxxx tables durchsucht - nirgendwo habe ich einen passenden Hinweis gefunden.
Mal abwarten, vielleicht meldet sich noch Jemand zu dem Thema.

B.Hauser
28-07-16, 14:20
Wie war's mit SYSCST oder SYSCSTCOL ggf. auch beide mit einander verknüpft?
Falls die Views in der Datenbiliothek nicht vohranden sein sollten, greif auf die in der QSYS2 zu.

Birgitta

a.wojcik
28-07-16, 14:40
Hallo Birgitta,
ich weiss nicht genau was die zwei Dateien beinhalten, aber im Feld TABLE_NAME gibt es keine Dateinamen aus unserer Datenbank...

B.Hauser
28-07-16, 14:57
In diesen Views sind alle Tabellen, für die Primary, Uniqupe und Foreign Key Constraints definiert sind enthalten.
Sind vielleicht auf Deinen Tabellen keine Constraints?
Hast Du schon mal geprüft, ob "Deine" Tabellen-Namen unter System_Table_Namen zu finden sind?

Birgitta

Fuerchau
28-07-16, 15:18
Nun ja, die SYSxxx-Tabellen beschränken sich im Wesentlichen auf SQL-Objekte.
Klassische PF's und LF's musst du eher per klassischen Methoden bearbeiten.

Die Tabelle heißt QADBKFLD in der QSYS.
Beim Betrachten der PF mittels DSPDBR fällt allerdings auf, dass in der SYSIBM die Tabelle SYSSTATS vorhanden ist.
Und siehe da, das ist genau die Tabelle die du brauchst. Diese wird übrigens auch von ODBC für die Schemaabfrage SQLStatistics benötigt wird. Warum diese nun in die SYSIBM gewandert ist weiß ich allerdings auch nicht.