Para conocer mediante una consulta SQL algunos datos de las restricciones (constraints) utilizando vistas del diccionario de datos de Oracle conociendo solo el nombre de la tabla podemos hacer la siguiente SELECT, en la que nos indica el propietario, nombre de la tabla, nombre de la columna que tiene la restricción, nombre de la constraint, tipo de constraint, la condición que deben cumplir las constraints tipo CHECK y el estado.
Un ejemplo mostrando información de las constraints donde la tabla se llama EMP.
Un ejemplo mostrando información de las constraints donde la tabla se llama EMP.
select
owner,
table_name,
column_name,
constraint_name,
constraint_type,
search_condition,
status
status
from
all_constraints
join all_cons_columns
using(owner,table_name,constraint_name)
where
table_name='EMP';
Owner es el nombre del esquema en el que se encuentra la tabla. Tipo de constraint sobre tabla puede ser: PRIMARY KEY (P), FOREIGN KEY (R), UNIQUE (U), CHECK (C). El nombre de una constraint es único por esquema.
Basándonos en la SELECT anterior, podemos modificar la cláusula WHERE para filtrar por los datos que nos interesan. Recordar que la información está en mayúsculas, así que en las condiciones del WHERE al preguntar por valores, utilizar mayúsculas.
Describir las vistas, para ver qué otra información nos dan y así modificar la SELECT para obtener lo que buscamos. En ALL_CONS_COLUMNS básicamente tenemos la información de qué columnas son las afectadas por la constraint. En ALL_CONSTRAINTS tenemos información sobre su estado (estatus, validate), constraints a las que se hace referencia en caso de una foreign key (r_constraint_name,r_owner), regla de eliminación (delete_rule), índice asociado a la constraint (index_name, index_owner), etc.
Otra alternativa a las vistas ALL_CONSTRAINTS y ALL_CONS_COLUMNS son: USER_CONSTRAINTS y USER_CONS_COLUMNS, en las que la información que nos mostraran se limita a las constraints pertenecientes al usuario con el que nos hemos conectado.
Para más información:
–Modificar el estado de una constraint
–Procedimiento que se encarga de activar/desactivar todas las constraints de todas las tablas de un usuario.
–Modificar el estado de una constraint
–Procedimiento que se encarga de activar/desactivar todas las constraints de todas las tablas de un usuario.
–Web de Oracle sobre la vista ALL_CONSTRAINTS y sobre ALL_CONS_COLUMNS
Muchas gracias, fue muy útil.
ResponderEliminarHa sido de mucha utilidad. Gracias
ResponderEliminar