141 votes

Comment obtenir la colonne de clé primaire dans Oracle?

Je dois obtenir le nom de la colonne de clé primaire. Dans l'entrée je n'ai que le nom de la table. Est-ce que quelqu'un peut m'aider?

238voto

Richie Points 3263
 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 majuscule, car Oracle stocke les noms de table en majuscule.

29voto

My-Name-Is Points 1477

Identique à la réponse de 'Richie' mais un peu plus concise.

 SELECT column_name FROM all_cons_columns WHERE constraint_name = (
  SELECT constraint_name FROM user_constraints 
  WHERE UPPER(table_name) = UPPER('tableName') AND CONSTRAINT_TYPE = 'P'
);
 

2voto

Vipin Tiwari Points 11
 Select constraint_name,constraint_type from user_constraints where table_name** **= ‘TABLE_NAME' ;
 

(Ceci listera la clé primaire puis)

 Select column_name,position from user_cons_cloumns where constraint_name='PK_XYZ'; 
 

(Cela vous donnera la colonne, ici PK_XYZ est le nom de la clé primaire)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X