Oracle (9.2): Metadatenabfrage FK gibt doppelte Ausgabe

planb2000

Erfahrenes Mitglied
Hallo Oracle-Könner,

ich bekomme mit folgendem Statement immer eine Verdopplung der Ausgabe wenn ich die Foreign-Keys abfrage, bei der Primary-Key Abfrage ist alle schick.

Primary-Key:
PHP:
SELECT DBMS_METADATA.GEt_ddl('CONSTRAINT',constraint_name) zeile
FROM user_constraints
WHERE constraint_type ='P'
AND ROWNUM < 5

Foreign-Key:
PHP:
SELECT DBMS_METADATA.GET_dependent_ddl('REF_CONSTRAINT',table_name) zeile
FROM user_constraints
WHERE constraint_type ='R'
AND ROWNUM < 5

Mein Ziel ist die Foreign-Key Constraints (definitionen NICHT Spalten ) zu erfahren.

Kann jemand helfen
 
Im Prinzip ist deine Abfrage so richtig. Allerdings kann die Ausgabe etwas verwirrend sein, wenn du mehr als ein FK auf der Tabelle hast.

Die Funktion DBMS_METADATA.GET_dependent_ddl('REF_CONSTRAINT',table_name) liefert dir die DDL zu allen Foreign Keys auf der Tabelle. Wenn du nun 2 Foreign Keys auf der Tabelle hast, wird die Prozeduzr natürlich 2 mal aufgerufen, liefert aber auch 2 mal das gleiche Ergebnis.

Um also das DDL nur einmal pro Tabelle zu erhalten empfiehlt sich ein DISTINCT oder GROUP BY über den Tabellennamen.
 
Zurück