J'ai besoin d'obtenir le nom de la colonne de clé primaire.
Dans l'entrée, je n'ai que le nom de la table.
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;
Assurez-vous que «TABLE_NAME» est en majuscules car Oracle stocke les noms de table en majuscules.
q
.Identique à la réponse de «Richie» mais un peu plus concis.
Requête pour les contraintes utilisateur uniquement
Requête pour toutes les contraintes
la source
user_constraints
parall_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;
(Cela listera la clé primaire puis)
(Cela vous donnera la colonne, ici PK_XYZ est le nom de la clé primay)
la source
Essayez ce code Ici, j'ai créé une table pour obtenir la colonne de clé primaire dans oracle qui est appelée test, puis requête
la source
Enregistrez le script suivant comme quelque chose comme findPK.sql.
Il peut alors être appelé en utilisant
la source