Necesito obtener el nombre de la columna de clave principal.
En la entrada, solo tengo el nombre de la tabla.
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;
Asegúrese de que 'TABLE_NAME' esté en mayúsculas ya que Oracle almacena los nombres de las tablas en mayúsculas.
q.Igual que la respuesta de 'Richie' pero un poco más concisa.
Consulta solo para restricciones de usuario
Consultar todas las restricciones
fuente
user_constraintsporall_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;(Esto mostrará la clave principal y luego)
(Esto le dará la columna, aquí PK_XYZ es el nombre de la clave principal)
fuente
Pruebe este código aquí Creé una tabla para obtener la columna de clave principal en Oracle que se llama prueba y luego consulta
fuente
Guarde el siguiente script como algo como findPK.sql.
Luego se puede llamar usando
fuente