Oracle - *** Vistas DBA? ****

 
Vista:

*** Vistas DBA? ****

Publicado por Gilberto (119 intervenciones) el 12/09/2003 04:39:09
Alguien me podría decir con que vista o vistas formo el select para poder ver como tengo formado los constraints de mis tablas. Por ejemplo: quiero saber como puedo hacer para ver mis llaves foraneas de:
Tabla B es un detalle de la Tabla A y por ende la tabla B tiene un constraint de una foranea hacia la tabla A, como desde SQL puedo averiguar a que campos hace referencia ese constraint en ambas tablas. Espero me entiendan lo que quiero dar a entender. Lo que sucede es que no me permiten hacer uso del Schema Manager ni ninguno de sus similares programas para control de DBA, pero tengo los roles y privilegios de DBA como para poder hacerlo desde SQL. Por las sugerencias muy agradecido.
gilh
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

RE:*** Vistas DBA? ****

Publicado por Byron (300 intervenciones) el 12/09/2003 17:00:43
Para ver las tablas detalle o hijas:
SELECT b.TABLE_NAME, b.CONSTRAINT_NAME, b.STATUS
FROM USER_constraints a, USER_CONSTRAINTS b
WHERE a.table_name = UPPER('&PADRE') and a.constraint_type = 'P' and a.constraint_name = b.R_CONSTRAINT_NAME;

Para ver los campos que conforman un contraint:
SELECT COLUMN_NAME FROM USER_CONS_COLUMNS
WHERE CONSTRAINT_NAME = '&NOM_CONSTRAINT'
ORDER BY POSITION;

Para hacer esto no necesitas permisos de dba. Espero te sirva

Saludos DTB
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

***Un par de dudas****

Publicado por Gilberto (119 intervenciones) el 13/09/2003 17:15:06
Gracias por la respuesta pero me quedaron unas cuantas dudas.
1. Porque en el primer select utilizar la misma tabla solo que con diferente alias. Porque en el where utilizas el campo de una tabla y hace referencia a otro campo distinto de la otra tabla. (Sabiendo que ambas son la misma). a.constraint_name = b.R_CONSTRAINT_NAME
2. Como puedo saber que significa cada letra de constraint_type (C,P,R,V) Fijate que hice un distinct de este campo y me devolvió dos "V".
3. El constraint_type es el que me dice si es: Foranea, Unique, Primary etc.?
Por tu colaboración muy agradecido.
gilh
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

RE:***Un par de dudas****

Publicado por Byron (300 intervenciones) el 15/09/2003 16:37:10
1.- Cuando se especifica un constraint de tipo foreign key (tabla detalle) en constraint_name se almacena el nombre del propio constraint y en r_constraint_name se almacena el constraint_name de la primary key de la tabla padre (cabecera), es decir, la forma de saber a que tabla hace relación es mediante el campo r_constraint_name (relational constraint).

2 y 3.- Descripcion de los tipos:
C = Check Constraint (verifica campos null, campo este dentro de rango de valores, etc)
P = Primary Key Constraint
R = Relational Integrity Constraint (Foreign key)
U = Unique index
V = Check Option Constraint (Vistas con check option)

Saludos DTB
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