Смекни!
smekni.com

Общие элементы SQL (стр. 9 из 9)

  1. <Определение представления> (<view definition>) определяет представляемую таблицу. Представляемая таблица V - это таблица, которая явилась бы результатом выполнения <спецификации запроса> (<query specification>). Является ли представляемая таблица материализованной определяется в реализации.
  2. Если V - изменяемая (updatable) таблица, то пусть T обозначает таблицу, идентифицируемую <именем таблицы> (<table name>), которое указано в первом <разделе from> (<from clause>) в <спецификации запроса> (<query specification>). Для каждой строки в V существует соответствующая строка в T, из которой получается эта строка V. Для каждого столбца в V существует соответствующий столбец в T, из которого получается этот столбец V. Занесение строки в V является занесением соответствующей строки в T. Удаление строки из V является удалением соответствующей строки из T. Модификация столбца строки в V является модификацией соответствующей строки в T.

  3. a) Если указано WITH CHECK OPTION, и <спецификация запроса> (<query specification>) содержит <раздел where> (<where clause>), то применение к представлению <оператора вставки> (<insert statement>), <оператора модификации: позиционного> (<update statement: positioned>) или <оператора модификации: поискового> (<update statement: searched>) не должно приводить к созданию строки, для которой результат этого <раздела where> (<where clause>) есть false.
    b) Если WITH CHECK OPTION не указано, то <определение представления> (<view definition>) не должно ограничивать значения данных, которые могут быть занесены в изменяемую (updatable) представляемую таблицу.
    Замечание: См. Общее правило 2 в 8.7, "<Оператор вставки> (<insert statement>)", Общее правило 5 в 8.11, "<Оператор модификации: позиционный> (<update statement: positioned>)" и Общее правило 4 в 8.12, "<Оператор модификации: поисковый> (<update statement: searched>)".

6.10 <Определение привилегий> (<privilege definition>)

Функция

Определяет привилегии.

Формат

<privilege definition> ::=

GRANT <privileges> ON <table name>

TO <grantee> [{,<grantee>}...]

[WITH GRANT OPTION]

<privileges> ::=

ALL PRIVILEGES

| <action> [{,<action>}...]

<action> ::=

SELECT | INSERT | DELETE

| UPDATE [(<grant column list>)]

| REFERENCES [(<grant column list>]

<grant column list> ::=

<column name> [{,<column name>}...]

<grantee> ::=

PUBLIC | <authorization identifier>

Синтаксические правила

  1. Пусть T обозначает таблицу, идентифицируемую <именем таблицы> (<table name>). <Привилегии> (<privileges>) определяют одну или более привилегий на T.
  2. UPDATE (<grant column list>) специфицирует привилегию UPDATE для каждого столбца T, указанного в <списке разрешаемых столбцов> (<grant column list>). Каждое <имя столбца> (<column name>) в <списке разрешаемых столбцов> (<grant column list>) должно идентифицировать столбец T. Если <список разрешаемых столбцов> (<grant column list>) опущен, то UPDATE специфицирует привилегию UPDATE для всех столбцов T.
  3. REFERENCES (<grant column list>) специфицирует привилегию REFERENCES для каждого столбца T, указанного в <списке разрешаемых столбцов> (<grant column list>). Каждое <имя столбца> (<column name>) в <списке разрешаемых столбцов> (<grant column list>) должно идентифицировать столбец T. Если <список разрешаемых столбцов> (<grant column list>) опущен, то REFERENCES специфицирует привилегию REFERENCES для всех столбцов T.
  4. Применимые <привилегии> (<privileges>) для ссылки на <имя таблицы> (<table name>) определяются следующим образом:
    a)

  • i) Если вхождение <имени таблицы> (<table name>) содержится в <схеме> (<schema>), то пусть применимым <идентификатором полномочий> (<authorization identifier>) будет <идентификатор полномочий> (<authorization identifier>), указанный как <идентификатор полномочий схемы> (<schema authorization identifier>) этой <схемы> (<schema>).
    ii) Если вхождение <имени таблицы> (<table name>) содержится в <модуле> (<module>), то пусть применимым <идентификатором полномочий> (<authorization identifier>) будет <идентификатор полномочий> (<authorization identifier>), указанный как <идентификатор полномочий модуля> (<module authorization identifier>) этого <модуля> (<module>).


b)


    • i) Если применимый <идентификатор полномочий> (<authorization identifier>) является таким же, как <идентификатор полномочий> (<authorization identifier>), явно или неявно специфицированный в <имени таблицы> (<table name>), то:
    1. Если T - базовая таблица, то применимыми <привилегиями> (<privileges>) являются INSERT, SELECT, UPDATE, DELETE и REFERENCES, и эти <привилегии> (<privileges>) могут передаваться.
    2. Если T - представляемая таблица и не является изменяемой (updatable), то применимой <привилегией> (<privilege>) является SELECT, и эта привилегия может передаваться тогда и только тогда, когда могут передаваться применимые привилегии SELECT ко всем <именам таблиц>, содержащимся в <спецификации запроса> (<query specification>).
    3. Если T - изменяемая (updatable) представляемая таблица, то применимыми на T <привилегиями> (<privileges>) являются все <привилегии> (<privileges>) (кроме REFERENCES), применимые на <имени таблицы> (<table name>) T2, указанном в <разделе from> (<from clause>) <спецификации запроса> (<query specification>). Привилегия является передаваемой на T в том и только в том случае, когда она является передаваемой на T2.


    ii) Если применимый <идентификатор полномочий> (<authorization identifier>) не является таким же, как <идентификатор полномочий> (<authorization identifier>), явно или неявно специфицированный в <имени таблицы> (<table name>), то применимые <определения привилегий> (<privileges definition>) включают все <определения привилегий> (<privileges definition>), для которых <имя таблицы> (<table name>) такое же, как данное <имя таблицы> (<table name>), и для которых <получающие> (<grantee>) либо включают применимый <идентификатор полномочий> (<authorization identifier>), либо включают PUBLIC, и применимые <привилегии> (<privileges>) содержат все привилегии, специфицированные в применимых <определениях привилегий> (<privileges definition>). Привилегия является передаваемой в том и только в том случае, когда она указана в числе <привилегий> (<privileges>) некоторого применимого <определения привилегии> (<privilege definition>), в котором указано WITH GRANT OPTION и указан применимый <идентификатор полномочий> (<authorization identifier>).

    1. ALL эквивалентно списку <действий> (<action>), включающему все применимые <привилегии> (<privileges>) на данном <имени таблицы> (<table name>).
    2. Применимые <привилегии> (<privileges>) для <имени таблицы> (<table name>) из <определения привилегий> (<provileges definition>) должны включать <привилегии> (<privileges>), указанные в <определении привилегий> (<privileges definition>).