Ich muss den Namen der Primärschlüsselspalte erhalten.
In der Eingabe habe ich nur den Tabellennamen.
SELECT cols.table_name, cols.column_name, cols.position, cons.status, cons.owner
FROM all_constraints cons, all_cons_columns cols
WHERE cols.table_name = 'TABLE_NAME'
AND cons.constraint_type = 'P'
AND cons.constraint_name = cols.constraint_name
AND cons.owner = cols.owner
ORDER BY cols.table_name, cols.position;
Stellen Sie sicher, dass 'TABLE_NAME' in Großbuchstaben geschrieben ist, da Oracle Tabellennamen in Großbuchstaben speichert.
q
.Wie die Antwort von 'Richie', aber etwas prägnanter.
Abfrage nur für Benutzereinschränkungen
Abfrage für alle Einschränkungen
quelle
user_constraints
durchall_constraints
.SELECT owner, column_name, position FROM all_cons_columns WHERE (owner, constraint_name) in (SELECT owner, constraint_name FROM all_constraints WHERE UPPER(table_name) = UPPER('&tableName') AND CONSTRAINT_TYPE = 'P') order by owner, position;
(Dies listet den Primärschlüssel auf und dann)
(Dies gibt Ihnen die Spalte, hier ist PK_XYZ der Primay-Schlüsselname)
quelle
Versuchen Sie diesen Code Hier habe ich eine Tabelle zum Abrufen der Primärschlüsselspalte in Oracle erstellt, die als Test und anschließende Abfrage bezeichnet wird
quelle
Speichern Sie das folgende Skript als findPK.sql.
Es kann dann mit aufgerufen werden
quelle