Oracle - como saber a cuales tablas hace referencia una tabla

 
Vista:
Imágen de perfil de Otoniel

como saber a cuales tablas hace referencia una tabla

Publicado por Otoniel (12 intervenciones) el 14/10/2014 16:43:30
deja ver si me explico:
tengo una tabla trabajador que tiene varios atributos: nombre, salario... y unas llaves foraneas que hacen referenciaa otras tablas: Pais, Departamento y Categoria.

Necesito conocer cuales son las tablas a las cuales hace referencia la tabla trabajador.

se como hacerlo alreves, es decir x ejemplo dada la tabla pais me dice cual es la llave foranea y la tabla a la cual hace referencia:
este es el codigo para eso:
1
2
3
4
5
6
7
8
9
SELECT C.TABLE_NAME , C.CONSTRAINT_Name , CC.COLUMN_NAME "FK Column"
      FROM ALL_CONSTRAINTS C
      , All_Cons_colUMNs CC
      WHERE C.Constraint_Name = CC.Constraint_Name
      AND R_CONSTRAINT_NAME = ( SELECT CONSTRAINT_NAME
      FROM ALL_CONSTRAINTS
      WHERE TABLE_NAME = UPPER('pais')
      AND CONSTRAINT_TYPE = 'P'
     );

en este caso la respuesta seria:
TABLE_NAME CONSTRAINT_NAME FKColumn
------------------------ ------------------------------ ---------------------
TRABAJADOR TRABAJADOR_FK3 PAIS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

como saber a cuales tablas hace referencia una tabla

Publicado por luis (235 intervenciones) el 14/10/2014 23:39:14
Hola otoniel

Para saber las tablas padres de una tabla hija, en este caso tu tabla trabajador, puedes usar la siguiente sentencia select:

1
2
3
4
5
6
7
8
9
SELECT OWNER, TABLE_NAME, CONSTRAINT_NAME
FROM DBA_CONSTRAINTS  X
WHERE EXISTS (SELECT 1 FROM DBA_CONSTRAINTS
              WHERE TABLE_NAME=<nombre_tabla>
                AND OWNER=<Propietario_tabla>
                AND CONSTRAINT_TYPE='R'
                AND R_OWNER=X.OWNER
                AND R_CONSTRAINT_NAME=X.constraint_name)
AND CONSTRAINT_TYPE='P';

Ojo que las tablas están relacionadas.

Saludos

Luis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

como saber a cuales tablas hace referencia una tabla

Publicado por Andres Bajaña (1 intervención) el 02/10/2019 17:15:57
1
2
3
4
5
6
7
8
9
10
11
select O.NAME AS TABLA, C.NAME INDEX2,
B.NAME RELACION
from SYS.CDEF$ t,
     SYS.OBJ$ O,
     SYS.OBJ$ B,
     SYS.CON$ C
WHERE T.ROBJ# IS NOT NULL
AND T.OBJ# = O.OBJ#
AND T.ROBJ# = B.OBJ#
AND T.CON# = C.CON#
AND O.NAME = UPPER('NOMBRE_TABLA');
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar