Spec-Zone.ru › MySQL 5.7

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_UPDATABLE

    MySQL устанавливает флаг, называемый флагом изменяемости представления, во время 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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/information-schema-views-table.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API