Preciso obter o nome da coluna da chave primária.
Na entrada, tenho apenas o nome da tabela.
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;
Certifique-se de que 'TABLE_NAME' esteja em maiúsculas, pois o Oracle armazena os nomes das tabelas em maiúsculas.
q
.O mesmo que a resposta de 'Richie', mas um pouco mais conciso.
Consultar apenas as restrições do usuário
Consulta para todas as restrições
fonte
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;
(Isso listará a chave primária e, em seguida)
(Isso fornecerá a coluna, aqui PK_XYZ é o nome da chave primária)
fonte
Tente este código Aqui eu criei uma tabela para obter a coluna de chave primária no oracle que é chamada de teste e consulta
fonte
Salve o seguinte script como algo como findPK.sql.
Ele pode então ser chamado usando
fonte