|
Spec-Zone .ru
спецификации, руководства, описания, API
|
VIEWS таблица предоставляет
информацию о представлениях в базах данных. Вы должны иметь SHOW VIEW полномочие получить доступ к этой таблице.
INFORMATION_SCHEMA Имя |
SHOW Имя
|
Комментарии |
|---|---|---|
TABLE_CATALOG |
def |
|
TABLE_SCHEMA |
||
TABLE_NAME |
||
VIEW_DEFINITION |
||
CHECK_OPTION |
||
IS_UPDATABLE |
||
DEFINER |
||
SECURITY_TYPE |
||
CHARACTER_SET_CLIENT |
Расширение MySQL | |
COLLATION_CONNECTION |
Расширение MySQL |
Примечания:
VIEW_DEFINITION у столбца есть большинство того, что Вы
видите в 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 у столбца есть значение NONE, CASCADE, или LOCAL.
MySQL устанавливает флаг, названный представлением updatability флаг, в CREATE VIEW время. Флаг устанавливается в YES (истина), если UPDATE
и DELETE
(и подобные операции), являются законными для представления. Иначе, флаг устанавливается в NO (ложь). IS_UPDATABLE столбец в VIEWS таблица
выводит на экран состояние этого флага. Это означает, что сервер всегда знает, обновляемо ли
представление. Если представление не обновляемо, операторы такой UPDATE, DELETE, и INSERT
недопустимы и будет отклонен. (Отметьте, что, даже если представление обновляемо, не могло бы быть
возможно вставить в это; для деталей обратитесь к Разделу
13.1.16,"CREATE VIEW Синтаксис".)
DEFINER: Учетная запись пользователя, который создал
представление, в ' формат. user_name'@'host_name'SECURITY_TYPE
имеет значение DEFINER или INVOKER.
CHARACTER_SET_CLIENT: Значение сеанса character_set_client системная переменная, когда представление
создавалось.
COLLATION_CONNECTION: Значение сеанса collation_connection системная переменная, когда представление
создавалось.
MySQL позволяет Вам использовать отличающийся sql_mode настройки, чтобы сказать серверу тип синтаксиса SQL, чтобы поддерживать.
Например, Вы могли бы использовать ANSI Режим SQL, чтобы гарантировать MySQL правильно интерпретирует
стандартный оператор связи SQL, двойная черта (||), в Ваших запросах. Если Вы тогда
создаете представление, которое связывает элементы, Вы могли бы взволновать то изменение sql_mode установка в значение, отличающееся от ANSI мог заставить представление становиться недопустимым. Но дело обстоит не
так. Независимо от того, как Вы выписываете определение представления, MySQL всегда хранит его тот же самый путь
в канонической форме. Вот пример, который показывает, как сервер изменяет оператор связи двойной черты на a 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 разделяются из определения сервером.