список constraint'ов, ссылающихся на таблицу

0ri0n
Дата: 04.08.2005 16:41:41
Нужен скрипт, выбирающий список constraint'ов, ссылающихся на заданную таблицу (foreign keys). Какие идеи?
Vadim_Maximov
Дата: 04.08.2005 16:44:44
0ri0n
Какие идеи?

SQL> desc dba_constraints;
 Name                                      Null?    Type
 ----------------------------------------- -------- --------------
 OWNER                                     NOT NULL VARCHAR2(30)
 CONSTRAINT_NAME                           NOT NULL VARCHAR2(30)
 CONSTRAINT_TYPE                                    VARCHAR2(1)
 TABLE_NAME                                NOT NULL VARCHAR2(30)
 SEARCH_CONDITION                                   LONG
 R_OWNER                                            VARCHAR2(30)
 R_CONSTRAINT_NAME                                  VARCHAR2(30)
 DELETE_RULE                                        VARCHAR2(9)
 STATUS                                             VARCHAR2(8)
 DEFERRABLE                                         VARCHAR2(14)
 DEFERRED                                           VARCHAR2(9)
 VALIDATED                                          VARCHAR2(13)
 GENERATED                                          VARCHAR2(14)
 BAD                                                VARCHAR2(3)
 RELY                                               VARCHAR2(4)
 LAST_CHANGE                                        DATE
 INDEX_OWNER                                        VARCHAR2(30)
 INDEX_NAME                                         VARCHAR2(30)
 INVALID                                            VARCHAR2(7)
 VIEW_RELATED                                       VARCHAR2(14)

SQL> desc dba_cons_columns;
 Name                                      Null?    Type
 ----------------------------------------- -------- --------------
 OWNER                                     NOT NULL VARCHAR2(30)
 CONSTRAINT_NAME                           NOT NULL VARCHAR2(30)
 TABLE_NAME                                NOT NULL VARCHAR2(30)
 COLUMN_NAME                                        VARCHAR2(4000)
 POSITION                                           NUMBER
dev76
Дата: 04.08.2005 16:46:12
SELECT * FROM dba_constraints where table_name='ИМЯ TABLE'
softwarer
Дата: 04.08.2005 16:55:04
dev76

А стоит ли давать принципиально неверные ответы?
dev76
Дата: 04.08.2005 17:00:03
и в чем же я не прав
Wolfon Stromboy
Дата: 04.08.2005 17:00:29
dev76
SELECT * FROM dba_constraints where table_name='ИМЯ TABLE'

Нет, это будут ограничения, которые висят под указанной таблицей
Надо так:
Select B.constraint_name
From dba_constraints A, dba_constraints B
where A.constraint_name = B.r_constraint_name
  and A.table_name = '<имя таблицы>'
alex-ls
Дата: 04.08.2005 17:00:56
   SELECT /*+ ALL_ROWS*/
	 	  CC2.TABLE_NAME AS RTABLE_NAME
		  , CC2.COLUMN_NAME AS RCOLUMN_NAME
   FROM USER_CONS_COLUMNS CC
	    JOIN USER_CONSTRAINTS UC ON UC.R_CONSTRAINT_NAME = CC.CONSTRAINT_NAME
	    JOIN USER_CONS_COLUMNS CC2 ON UC.CONSTRAINT_NAME = CC2.CONSTRAINT_NAME
   WHERE CC.TABLE_NAME = 'ENENTITY'
Как я понял что-то типа...
dev76
Дата: 04.08.2005 17:01:19
Я дал список всех констрейнов заданной таблицы, а дальше дело автора вопроса куда копать
alex-ls
Дата: 04.08.2005 17:04:46
dev76
Я дал список всех констрейнов заданной таблицы, а дальше дело автора вопроса куда копать


автор
скрипт, выбирающий список constraint'ов, ссылающихся на заданную таблицу

Вы не видите отличий?
waspwort
Дата: 04.08.2005 17:11:56
SELECT * FROM Dba_Constraints dc
WHERE dc.constraint_type = 'R'
AND dc.r_constraint_name IN
    (SELECT dc1.constraint_name
     FROM Dba_Constraints dc1
     WHERE dc1.constraint_type IN ('P','U')
     AND upper(dc1.table_name) = 'T1')

типа того? Т1 это твоя анализируемая таблица