Estoy tratando de encontrar una consulta que me devuelva una lista de las claves externas para una tabla y las tablas y columnas a las que hacen referencia. Estoy a medio camino con
SELECT a.table_name, 
       a.column_name, 
       a.constraint_name, 
       c.owner
FROM ALL_CONS_COLUMNS A, ALL_CONSTRAINTS C  
where A.CONSTRAINT_NAME = C.CONSTRAINT_NAME 
  and a.table_name=:TableName 
  and C.CONSTRAINT_TYPE = 'R'
Pero todavía necesito saber a qué tabla y clave primaria hace referencia esta clave. ¿Cómo conseguiría eso?
                    
                        oracle
                                metadata
                                database-metadata
                                
                    
                    
                        estimula
fuente
                
                fuente

Respuestas:
La clave primaria referenciada se describe en las columnas
r_owneryr_constraint_nameen la tablaALL_CONSTRAINTS. Esto te dará la información que deseas:fuente
Prueba esto:
fuente
Aquí hay un script para todo uso que utilizamos que ha sido increíblemente útil.
Guárdelo para poder ejecutarlo directamente (@ fkeys.sql). Le permitirá buscar por Propietario y la tabla Principal o Secundaria y mostrar las relaciones de claves externas. El script actual explícitamente se pone en cola en C: \ SQLRPTS, por lo que deberá crear esa carpeta para cambiar esa línea a algo que desee usar.
fuente
Esto recorrerá la jerarquía de claves foráneas para una tabla y columna determinadas y devolverá columnas de elementos secundarios y nietos, y todas las tablas descendientes. Utiliza subconsultas para agregar r_table_name y r_column_name a user_constraints, y luego las usa para conectar filas.
fuente
Aquí hay otra solución. El uso de las vistas predeterminadas de sys es muy lento (aproximadamente 10 segundos en mi situación). Esto es mucho más rápido que eso (aprox. 0.5s).
fuente
"_CURRENT_EDITION_OBJ"no es reconocidoSYS."_CURRENT_EDITION_OBJ"conSYS.OBJ$. Funcionaría tanto en 10g como en 11g. Y asegúrese de tener suficientes privilegios. También cambié mi respuesta conSYS.OBJ$.Si necesita todas las claves externas del usuario, utilice el siguiente script
basado en el código de Vincent Malgrat
fuente
Sé que es un poco tarde para responder, pero déjenme responder de todos modos, algunas de las respuestas anteriores son bastante complicadas, por lo tanto, aquí hay una respuesta mucho más simple.
fuente
En caso de que uno quiera crear restricciones FK de la tabla de entorno UAT a Live, dispare debajo de la consulta dinámica .....
fuente
Mi versión, en mi humilde opinión, más legible:
fuente
::con:ytablecontablEs un poco tarde para responder, pero espero que mi respuesta haya sido útil para alguien que necesita seleccionar claves externas compuestas.
fuente
Usé el siguiente código y sirvió para mi propósito.
fuente
fuente
user_constraintsaall_constraintssegún sea necesario.fuente
fuente
For Load UserTable (Lista de claves foráneas y las tablas a las que hacen referencia)
fuente