Je le ferais comme ça;
Si vous voulez Cumulés avec toutes les colonnes sur la même ligne
select distinct c1.owner, c1.table_name, c1.constraint_name, c2.owner, c2.table_name,
listagg(c2.column_name,',') WITHIN GROUP (ORDER BY C2.POSITION) OVER (PARTITION BY c1.owner, c1.table_name, c1.constraint_name, c2.owner, c2.table_name) column_list
from dba_constraints c1
JOIN dba_cons_columns c2
ON c1.R_CONSTRAINT_NAME=C2.CONSTRAINT_NAME and c1.r_owner=c2.owner
where C1.constraint_type = 'R'
ou comme ça si vous voulez une ligne par colonne
select c1.owner, c1.table_name, c1.constraint_name, c2.owner, c2.table_name, c2.column_name
from dba_constraints c1
JOIN dba_cons_columns c2
ON c1.R_CONSTRAINT_NAME=C2.CONSTRAINT_NAME and c1.r_owner=c2.owner
where C1.constraint_type = 'R'
order by c1.owner, c1.table_name, c1.constraint_name, c2.position
ou si vous souhaitez référencer les détails de la colonne et les colonnes référencées détails
with constraint_colum_list as (select owner, table_name, constraint_name, listagg(column_name,',') WITHIN GROUP (order by position) as column_list
FROM DBA_CONS_COLUMNS GROUP BY owner, table_name, constraint_name)
select distinct c1.owner, c1.table_name, c1.constraint_name, c2.column_list, c3.owner, c3.table_name, c3.constraint_name, c3.column_list
from DBA_constraints c1
JOIN constraint_colum_list c2 ON c1.CONSTRAINT_NAME=C2.CONSTRAINT_NAME and c1.owner=c2.owner
JOIN constraint_colum_list c3 ON C1.R_CONSTRAINT_NAME=C3.CONSTRAINT_NAME AND C1.R_OWNER=C3.owner
where C1.constraint_type = 'R'
-- AND c1.owner = 'YOUR_SCHEMA';
Pour votre dernière solution, 'AND c1.owner =' YOUR_SCHEMA ';' Si le nom de connexion de mon développeur sql oracle est 'TestDemo', je dois donc faire 'AND c1.owner =' TestDemo ';' Ensuite, je peux seulement sortir les contraintes de clé étrangère que je spécifie/crée. Mais SQL Server n'a pas besoin de le faire, seul Oracle a besoin de cela? – EntryLeveDeveloper
Ma réponse est basée sur le fait que vous avez demandé TOUTES les clés étrangères sur TOUTES les tables. Si vous êtes seulement intéressé par le vôtre, remplacez 'DBA_CONSTRAINTS' par' USER_CONSTRAINTS' et 'DBA_CONS_COLUMNS' par' USER_CONS_COLUMNS' et vous ne verrez que celui que vous possédez – LauDec
Great. Ça marche. Puis-je savoir quels sont les autres résultats généralement utilisés en utilisant DBA_CONSTRAINTS?Je sais seulement que les contraintes de clé étrangère spécifiées par l'utilisateur/us sont utiles car je peux voir les relations entre les tables et les colonnes, donc je peux connaître le domaine d'activité du projet. – EntryLeveDeveloper