|
Программирование >> Преобразование значений null
3 b.column name, 4 a.constraint type 5 from all constraints a, 6 all cons columns b 7 where a.table name = EMP 8 and a.owner = SMEAGOL 9 and a.table name = b.table name 10 and a.owner = b.owner 11 and a.constraint name = b.constraint name PostgreSQL, MySQL и SQL Server Делаем запрос к INFORMATION SCHEMA.TABLE CONSTRAINTS и INFORMATION SCHEMA.KEY COLUMN USAGE:
Обсуждение Ограничения - настолько важная часть реляционных баз данных, что даже не стоит объяснять, зачем необходимо знать, какие ограничения наложены на таблицу. Список наложенных на таблицу ограничений может понадобиться для разных целей: если необходимо найти таблицу без первичного ключа, если необходимо выяснить, какие столбцы должны быть внешними ключами, но ими не являются (т. е. данные дочерних таблиц отличаются от данных родительских таблиц, и вы хотите выяснить, почему это произошло), или если необходимо узнать проверочные ограничения (Допускает ли столбец значения NULL? Должны ли значения столбца удовлетворять какому-то специальному условию? и др.). Как получить список внешних ключей без соответствующих индексов Задача Требуется составить список таблиц, в которых есть непроиндексиро-ванные столбцы внешних ключей. Например, вы хотите знать, проиндексированы ли внешние ключи таблицы EMP. Решение DB2 Делаем запрос к SYSCAT.TABCONST, SYSCAT.KEYCOLUSE, SYS-CAT.INDEXES и SYSCAT.INDEXCOLUSE:
Делаем запрос к SYS.ALL CONS COLUMNS, SYS.ALL CONSTRA- INTS и SYS.ALL IND COLUMNS:
EMP SMEAGOL b.owner
PostgreSQL Делаем запрос к INFORMATION SCHEMA.KEY COLUMN USAGE, INFORMATION SCHEMA.REFERENTIAL CONSTRAINTS, INFORMA- TION SCHEMA.COLUMNS и PG CATALOG.PG INDEXES: fkeys.table name, fkeys.constraint name, fkeys.column name, ind cols.indexname a.constraint schema, a.table name, a.constraint name, a.column name information schema.key column usage a, information schema.referential constraints b a.constraint name = b.constraint name a.constraint schema = b.constraint schema a.constraint schema = SMEAGOL a.table name = EMP ) fkeys left join a.schemaname, a.tablename, a.indexname, b.column name pg catalog.pg indexes a, information schema.columns b a.tablename = b.table name a.schemaname = b.table schema ) ind cols ( fkeys.constraint schema = ind cols.schemaname and fkeys.table name = ind cols.tablename and fkeys.column name = ind cols.column name ) ind cols.indexname is null Для получения информации об индексах, такой как имя индекса, столбцы в индексе и порядковые номера столбцов в индексе, можно использовать команду SHOW INDEX (показать индекс). Кроме того, можно запросить INFORMATION SCHEMA.KEY COLUMN USAGE для получения списка внешних ключей данной таблицы. В MySQL 5 внешние ключи должны индексироваться автоматически, но порой этого не происходит. Чтобы выяснить, проиндексирован ли столбец внешнего ключа, выполняется команда SHOW INDEX для конкретной
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |