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_owner
yr_constraint_name
en 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:
ytable
contabl
Es 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_constraints
aall_constraints
según sea necesario.fuente
fuente
For Load UserTable (Lista de claves foráneas y las tablas a las que hacen referencia)
fuente