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.20,"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
разделяются из определения сервером.