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 (232 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:

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