24.3.31 Таблица INFORMATION_SCHEMA VIEWS
Таблица VIEWS предоставляет информацию о представлениих в базах данных. Для доступа к этой таблице требуется привилегия SHOW VIEW.
В таблице VIEWS содержатся следующие столбцы:
-
TABLE_CATALOGИмя каталога, к которому относится представление. Это значение всегда
def. -
TABLE_SCHEMAИмя схемы (базы данных), к которой относится представление.
-
TABLE_NAMEИмя представления.
-
VIEW_DEFINITIONЗапрос
SELECT, определяющий представление. В этом столбце содержится большая часть информации, отображаемой в столбцеCreate Table, которую производитSHOW CREATE VIEW. Пропустите слова доSELECTи словаWITH CHECK OPTION. Предположим, что исходный запрос был:CREATE VIEW v AS SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1 WITH CHECK OPTION;
Тогда определение представления выглядит следующим образом:
SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1
-
CHECK_OPTIONЗначение атрибута
CHECK_OPTION. Значение может быть одним изNONE,CASCADEилиLOCAL. -
IS_UPDATABLEMySQL устанавливает флаг, называемый флагом изменяемости представления, во время
CREATE VIEW. Флаг устанавливается в значениеYES(истина), еслиUPDATEиDELETE(и аналогичные операции) допустимы для представления. В противном случае флаг устанавливается в значениеNO(ложь). СтолбецIS_UPDATABLEв таблицеVIEWSотображает состояние этого флага.Если представление не изменяемо, запросы, такие как
UPDATE,DELETEиINSERT, недопустимы и отклоняются. (Даже если представление изменяемо, в него может быть невозможно вставить данные; для получения подробной информации см. Раздел 23.5.3, «Изменяемые и вставляемые представления».)Флаг
IS_UPDATABLEможет быть ненадежным, если представление зависит от одного или нескольких других представлений, а одно из этих базовых представлений обновляется. Независимо от значенияIS_UPDATABLE, сервер отслеживает изменяемость представления и корректно отклоняет операции изменения данных для представлений, которые не изменяемы. Если значениеIS_UPDATABLEдля представления стало неточным из-за изменений в базовых представлениях, значение можно обновить, удалив и повторно создав представление. -
DEFINERАккаунт пользователя, который создал представление, в формате
'.user_name'@'host_name' -
SECURITY_TYPEХарактеристика представления
SQL SECURITY. Значение может бытьDEFINERилиINVOKER. -
CHARACTER_SET_CLIENTЗначение сессии системной переменной
character_set_clientпри создании представления. -
COLLATION_CONNECTIONЗначение сессии системной переменной
collation_connectionпри создании представления.
Примечания
MySQL допускает различные настройки sql_mode, которые сообщают серверу, какой тип синтаксиса SQL поддерживать. Например, можно использовать режим SQL ANSI, чтобы убедиться, что MySQL правильно интерпретирует стандартный оператор конкатенации SQL, двойную черту (||), в ваших запросах. Если вы затем создаете представление, которое конкатенирует элементы, вы можете беспокоиться о том, что изменение настройки sql_mode на значение, отличное от ANSI, может привести к тому, что представление станет недопустимым. Но это не так. Независимо от того, как вы пишете определение представления, MySQL всегда хранит его одинаково, в канонической форме. Вот пример, который показывает, как сервер изменяет оператор конкатенации двойной черты на функцию CONCAT():
mysql> SET sql_mode = 'ANSI';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE VIEW test.v AS SELECT 'a' || 'b' as col1;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v';
+----------------------------------+
| VIEW_DEFINITION |
+----------------------------------+
| select concat('a','b') AS `col1` |
+----------------------------------+
1 row in set (0.00 sec)
Преимущество хранения определения представления в канонической форме заключается в том, что изменения, внесенные позже в значение sql_mode, не влияют на результаты из представления. Однако дополнительным следствием является то, что комментарии перед SELECT удаляются сервером из определения.
© 2025 Oracle
Licensed under the GPLv2 License.