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_constraints
porall_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