/* @show_constraints.sql version 1.1 Santiago Velilla 17 Abril 2014 Dpto. Informática e Ingeniería de Sistemas, Universidad Zaragoza Este script muestra las restricciones definidas sobre la tabla especificada Los parámetros son: &1 es el nombre de la tabla de la que hay que mostrar las restricciones uso: @show_constraints nombre_tabla */ SET ECHO ON set linesize 200 set pagesize 200 column OWNER format A12 column CONSTRAINT_NAME format A20 column TABLE_NAME format A16 column SEARCH_CONDITION format A24 column COLUMN_NAME format A16 column POSITION format 99 -------------------------------------------------------------------- /* la tabla del diccionario USER_CONS_COLUMNS tiene los siguientes atributos: OWNER, CONSTRAINT_NAME, TABLE_NAME, COLUMN_NAME, POSITION y especifica los atributos que intervienen en la restricciones definidas por el usuario e identificadas por (OWNER, CONSTRAINT_NAME, TABLE_NAME) ALL_CONS_COLUMNS es similar, pero para las restricciones accesibles al usuario */ -- describe USER_CONS_COLUMNS -- describe ALL_CONS_COLUMNS -- SELECT * FROM USER_CONS_COLUMNS WHERE table_name = UPPER('&1'); /* la tabla del diccionario USER_CONSTRAINTS contiene las restricciones definidas por el usuario. Tiene, entre otros, los siguientes atributos: OWNER, CONSTRAINT_NAME y TABLE_NAME que identifican la restricción CONSTRAINT_TYPE, SEARCH_CONDITION que especifican la restricción CONSTRAINT_TYPE VARCHAR2(1) Type of constraint definition: C (check constraint on a table) P (primary key) U (unique key) R (referential integrity) V (with check option, on a view) O (with read only, on a view) ALL_CONSTRAINTS es similar, pero para las restricciones accesibles al usuario */ -- describe USER_CONSTRAINTS -- describe ALL_CONSTRAINTS -- SELECT table_name, constraint_name, constraint_type, search_condition -- FROM user_constraints WHERE table_name = UPPER('&1'); SELECT b.OWNER, a.TABLE_NAME, a.CONSTRAINT_NAME, a.CONSTRAINT_TYPE, COLUMN_NAME, POSITION, SEARCH_CONDITION FROM USER_CONSTRAINTS a, USER_CONS_COLUMNS b WHERE (b.CONSTRAINT_NAME = a.CONSTRAINT_NAME) AND (a.TABLE_NAME = UPPER('&1'));