уничтожение данный
Введение в стандарты языка баз данных SQL
Деловая газета CitCity.ruCITKIT.ru - все об Open SourceФорумыВсе публикацииУчебный центрКурилка CITForum на CD Подписка на новости портала
Море(!) аналитической информации! :: CITFORUM.RUIT-консалтингSoftware EngineeringПрограммированиеСУБДБезопасностьInternetСетиОперационные системыHardware
Thursday, 01-May-2008 00:47:46 EESTWWWCITForum.ru3.5. Средства определения уничтожение данный манипулирования схемой
Как уничтожение данный в SQL/89, в SQL/92 существует оператор определения схемы, с помощью которого можно за одно обращение к СУБД создать все необходимые объекты, связанные с указанным идентификатором авторизации. Этот оператор имеет следующий синтаксис:
::=
CREATE SCHEMA
[ ]
[ ... ]
::=
|AUTHORIZATION
AUTHORIZATION
::=
::=
DEFAULT CHARACTER SET
::=
|
|
|
|
|
|
|
Пояснения:
Если имя схемы не специфицировано, но неявно в качестве имени схемы используется идентификатор авторизации схемы.
Если в определении схемы отсутствует раздел AUTHORIZATION, то
(a) если определение схемы содержится в модуле, то в качестве идентификатора авторизации схемы используется идентификатор авторизации модуля;
(b) иначе, в качестве идентификатора авторизации схемы используется идентификатор авторизации SQL-сессии.
При выполнении оператора определения схемы создаются объекты, определяемые элементами схемы (базовые таблицы, представления, ограничения, домены, утверждения целостности, наборы символов, привилегии уничтожение данный т.д.), уничтожение данный их соответствующие описатели.
В отличие от SQL/89, (a) операторы, используемые для определения элементов схемы, можно использовать независимо, вне оператора определения схемы уничтожение данный (b) созданную ранее схему можно уничтожить. Для уничтожения схемы используется оператор DROPSCHEMA, определяемый следующим синтаксисом:
::=
DROP SCHEMA
::= CASCADE RESTRICT
Пояснения:
Имя схемы должно идентифицировать существующую схему.
Если специфицировано RESTRICT, то к моменту выполнения оператора DROPSCHEMA схема не должна содержать какие бы то ни было объекты (постоянные базовые таблицы, глобальные временные таблицы, создаваемые локальные временные таблицы, представления уничтожение данный т.д.); эти объекты должны быть ранее уничтожены соответствующими индивидуальными операторами (см. п. 3.5.6).
Если специфицировано CASCADE, то такие объекты уничтожаются при выполнении оператора DROPSCHEMA путем неявного вызова соответствующих операторов.
При выполнении оператора DROPSCHEMA указанная схема уничтожение данный ее описание уничтожаются.
3.5.1. Определение таблицы
С помощью оператора определения таблицы можно создать постоянную базовую таблицу, создаваемую локальную временную таблицу или глобальную временную таблицу. Оператор определяется следующими синтаксическими правилами:
::=
CREATE [ { GLOBAL LOCAL } TEMPORARY ] TABLE
[ ON COMMIT { DELETE PRESERVE } ROWS ]
::=
[ { }... ]
::=
|
Пояснения:
Если определение таблицы содержится в определении схемы уничтожение данный имя таблицы содержит имя схемы, то это имя схемы должно быть таким же, как явно или неявно специфицированное имя схемы в определении схемы.
Схема, идентифицируемая явным или неявным именем схемы, входящим в имя таблицы, не должна содержать таблиц с тем же именем.
Если указано ONCOMMIT, то должно быть указано уничтожение данный TEMPORARY.
Если указано TEMPORARY уничтожение данный не указано ONCOMMIT, то неявно предполагается наличие ONCOMMITDELETEROWS.
Определение таблицы должно содержать по крайней мере одно определение столбца.
При выполнении оператора определения таблицы создается набор описателей привилегий, определяющих привилегии INSERT, SELECT, UPDATE, DELETE уничтожение данный REFERENCES на этой таблице уничтожение данный INSERT, SELECT, UPDATE уничтожение данный REFERENCES для каждого определения столбца. Все привилегии являются передаваемыми уничтожение данный относящимися к идентификатору авторизации из определения схемы или модуля в зависимости от того, где выполняется оператор определения таблицы.
Определение столбца имеет следующий синтаксис:
::=
{ }
[ ]
[ ... ]
[ ]
::=
[ ]
[ ]
::= CONSTRAINT
::=
NOT NULL
|
|
|
::=
[ [ NOT ] DEFERRABLE ]
|[ NOT ] DEFERRABLE [ ]
Пояснения:
Определение столбца может входить в определение таблицы, объявление временной таблицы уничтожение данный в оператор изменения схемы таблицы (ALTERTABLE). Пусть T обозначает соответствующую таблицу. Имя столбца в определении столбца должно отличаться от имени любого существующего столбца таблицы T.
i-тый столбец таблицы описывается i-тым определением столбца в определении таблицы. Имя уничтожение данный тип данных или домен столбца специфицируется именем столбца уничтожение данный типом данных или именем домена соответственно. Пусть C - имя столбца из определения столбца.
Если в определение столбца входит определение ограничения столбца, то пусть CND обозначает определение имени ограничения, если оно задано, уничтожение данный иначе пусть соответствует строке нулевой длины; пусть CA обозначает атрибуты ограничения, если они заданы, уничтожение данный иначе пусть соответствует строке нулевой длины. Определение ограничения столбца эквивалентно следующим определениям ограничения таблицы:
(a) если определение ограничения столбца содержит ограничение столбца NOTNULL, то оно эквивалентно ограничению таблицы CNDCHECK (CISNOTNULL) CA;
(b) если определение ограничения столбца содержит спецификацию уникальности, то оно эквивалентно определению ограничения таблицы, содержащему CND (C) CA
(c) если определение ограничения столбца содержит спецификацию ссылок (referencesspecification), то оно эквивалентно следующему табличному ограничению: CNDFOREIGNKEY (C) CA
(d) если определение ограничения столбца содержит определение проверочного ограничения, то оно эквивалентно определению табличного ограничения CNDCHECK () CA; при этом каждая ссылка на столбец, непосредственно содержащаяся в условии поиска, должна указывать на столбец C.
При определении столбца можно указать значение, которое должно присваиваться этому столбцу по умолчанию, если при занесении новых строк в соответствующую таблицу значение данного столбца не задается явно. Раздел умолчаний определяется следующим синтаксисом:
::= DEFAULT
::=
|
|USER
|CURRENT_USER
|SESSION_USER
|SYSTEM_USER NULL
Смысл этой конструкции ясен из синтаксических правил.
3.5.2. Определение ограничений целостности
В стандарте SQL/92 специфицированы две разновидности ограничений целостности - привязанные к определению таблиц (табличные ограничения) уничтожение данный определяемые независимо (утверждения целостности - assertions). Табличные ограничения похожи на соответствующие средства SQL/89, но на самом деле существенно более развиты. Поэтому мы достаточно подробно рассмотрим эти механизмы. Аналогов утверждений целостности в языке SQL/89 не было.
Общие синтаксические правила определения табличных ограничений выглядят следующим образом:
::=
[ ]
[ ]
::=
|
|
Синтаксические правила разделов определения имени уничтожение данный атрибутов ограничения приведены в п.3.5.1.
Пояснения:
Если атрибуты ограничения не специфицированы, то неявно предполагается наличие атрибута INITIALLYIMMEDIATENOTDEFERRABLE.
Если не специфицировано определение имени ограничения, то неявно предполагается наличие определения имени ограничения с именем, зависящим от реализации.
Ограничение уникальности определяется следующими синтаксическими правилами:
::=
::=
UNIQUE | PRIMARY KEY
::=
Пояснения:
Пусть T обозначает таблицу, для которой определяется ограничение уникальности, уничтожение данный UCL - список столбцов уникальности.
Если в спецификации уникальности содержится ключевое слово PRIMARYKEY, то пусть SC обозначает условие поиска UNIQUE (SELECTUCLFROMT) AND (UCL) ISNOTNULL
Если в спецификации уникальности содержится ключевое слово UNIQUE, то пусть SC обозначает условие поиска UNIQUE (SELECTUCLFROMT)
Определение таблицы должно содержать не более одного явного или неявного определения ограничения уникальности со спецификацией PRIMARYKEY.
Ограничение уникальности не удовлетворяется в том уничтожение данный только в том случае, когда истинно условие EXISTS (SELECT * FROMTWHERENOT (SC))
Ссылочное ограничение определяется следующими синтаксическими правилами:
::=
FOREIGN KEY
::=
REFERENCES
[ MATCH ]
[ ]
::= FULL PARTIAL
::=
::=
[ ]
::=
::=
[ ]
| [ ]
::= ON UPDATE
::= ON DELETE
::=
CASCADE
|SET NULL
|SET DEFAULT
|NO ACTION
Пояснения:
Ссылающейся таблицей мы будем называть таблицу, фигурирующую в определении таблицы или изменении схемы таблицы (операторе ALTERTABLE). Таблицей, на которую указывает ссылка, будем называть таблицу, имя которой указывается в разделе referencedtableandcolumns. Ссылающимися столбцами будем называть столбцы, перечисленные в списке столбцов-ссылок (referencecolumnlist).
Если в разделе referencedtableandcolumns специфицирован список столбцов, то набор имен столбцов из этого списка должен совпадать с набором столбцов уникальности, содержащемся в ограничении уникальности таблицы, на которую указывает ссылка.
Если раздел referencedtableandcolumns не содержит списка столбцов, то для таблицы, на которую указывает ссылка, должно быть определено ограничение уникальности с ключевым словом PRIMARYKEY.
Ограничение уникальности для таблицы, на которую указывает ссылка, должно не быть откладываемым.
Таблица, на которую указывает ссылка, должна быть базовой и,
(a) если ссылающаяся таблица является постоянной базовой, то уничтожение данный таблица, на которую указывает ссылка, должна быть постоянной базовой;
(b) если ссылающаяся таблица является глобальной временной, то уничтожение данный таблица, на которую указывает ссылка, должна быть глобальной временной;
(c) если ссылающаяся таблица является создаваемой локальной временной, то уничтожение данный таблица, на которую указывает ссылка, должна быть создаваемой локальной временной;
(d) если ссылающаяся таблица является объявляемой локальной временной, то таблица, на которую указывает ссылка, должна быть либо глобальной временной, либо создаваемой локальной временной, либо объявляемой локальной временной.
Если таблица, на которую указывает ссылка является временной со спецификацией ONCOMMITDELETEROWS, то уничтожение данный для ссылающейся таблицы должно быть специфицировано ONCOMMITDELETEROWS.
В списке ссылающихся столбцов должно содержаться то же число имен столбцов, что задается разделом referencedtableandcolumns. i-тый столбец, идентифицируемый списком ссылающихся столбцов соответствует i-тому столбцу, идентифицированному в разделе referencedtableandcolumns. Типы данных соответствующих столбцов должны совпадать.
Если в определении ссылочного ограничения не специфицировано правило модификации (updaterule), то по умолчанию предполагается наличие такого правила с действием NOACTION.
Если в определении ссылочного ограничения не специфицировано правило удаления (deleterule), то по умолчанию предполагается наличие такого правила с действием NOАCTION.
Пусть Rf обозначает ссылающиеся столбцы, уничтожение данный Rt - соответствующие столбцы в таблице, на которую указывает ссылка. Ссылающаяся таблица уничтожение данный таблица, на которую указывает ссылка, удовлетворяют ссылочному ограничению в том уничтожение данный только в том случае, когда:
(a) тип соответствия (matchtype) не указан, уничтожение данный для каждой строки ссылающейся таблицы истинно условие RfMATCH (SELECTRtFROMT);
(b) указан тип соответствия PARTIAL, уничтожение данный для каждой строки ссылающейся таблицы истинно условие RfMATCHPARTIAL (SELECTRtFROMT);
(c) указан тип соответствия FULL, уничтожение данный для каждой строки ссылающейся таблицы истинно условие RfMATCHFULL (SELECTRtFROMT).
Если не указан тип соответствия или если указан тип соответствия FULL, то для данной строки таблицы, на которую указывает ссылка, соответствующими являются все строки ссылающейся таблицы, значения полей ссылающихся столбцов которых равны значениям соответствующих столбцов строки, на которую указывает ссылка.
Если указан тип соответствия PARTIAL, то
для данной строки таблицы, на которую указывает ссылка, соответствующими являются все строки ссылающейся таблицы, содержащие по крайней мере одно не неопределенное значение ссылающегося столбца, причем все не неопределенные значения столбцов этих строк совпадают со значениями соответствующих столбцов строки, на которую указывает ссылка;
для данной строки таблицы, на которую указывает ссылка, уникально соответствующими являются все соответствующие только ей строки; другие соответствующие строки называются неуникально соответствующими.
Для каждой строки таблицы, на которую указывает ссылка, соответствующие, уникально уничтожение данный неуникально соответствующие ей строки определяются непосредственно до выполнения любого оператора SQL. Во время выполнения оператора новые соответствующие строки не добавляются. Связь между неуникально соответствующими строками уничтожается в ходе выполнения оператора SQL, если строка, на которую ведет ссылка помечается для удаления или для изменения значения любого столбца, соответствующего не неопределенному ссылающемуся столбцу. Это происходит сразу после такой пометки. Сразу после этого происходит обнаружение новых уникально или неуникально соответствующих строк.
Если специфицировано правило удаления, уничтожение данный строка таблицы, на которую указывает ссылка, помечается для удаления, то
(a) если тип соответствия не специфицирован или если специфицирован тип соответствия FULL, то
(i) если в правиле удаления указано CASCADE, то все соответствующие строки помечаются для удаления;
(ii) если в правиле удаления указано SETNULL, то во всех соответствующих строках в каждый ссылающийся столбец заносится неопределенное значение;
(iii) если в правиле удаления указано SETDEFAULT, то во всех соответствующих строках в каждый ссылающийся столбец заносится соответствующее значение по умолчанию;
(b) если специфицирован тип соответствия PARTIAL, то
(i) если в правиле удаления указано CASCADE, то все уникально соответствующие строки помечаются для удаления;
(ii) если в правиле удаления указано SETNULL, то во всех уникально соответствующих строках в каждый ссылающийся столбец заносится неопределенное значение;
(iii) если в правиле удаления указано SETDEFAULT, то во всех уникально соответствующих строках в каждый ссылающийся столбец заносится соответствующее значение по умолчанию.
Если специфицировано правило модификации, уничтожение данный не неопределенное значение столбца в таблице, на которую указывает ссылка, изменяется на некоторое другое значение, то
(a) если тип соответствия не специфицирован или если специфицирован тип соответствия FULL, то
(i) если в правиле удаления указано CASCADE, то во всех соответствующих столбцах проставляется то же самое новое значение;
(ii) если в правиле модификации указано SETNULL, то
(*) если тип соответствия не указан, то во всех соответствующих строках в ссылающийся столбец, соответствующий измененному столбцу таблицы, на которую указывает ссылка, выставляется неопределенное значение;
(**) если указан тип соответствия FULL, то во всех соответствующих строках в каждый ссылающийся столбец заносится неопределенное значение;
(iii) если в правиле модификации указано SETDEFAULT, то во всех соответствующих строках в ссылающийся столбец, соответствующий измененному столбцу таблицы, на которую указывает ссылка, заносится значение по умолчанию;
(b) если указан тип соответствия PARTIAL, то
(i) если в правиле модификации указано CASCADE, то для каждой уникально соответствующей строки, содержащей не неопределенное значение в ссылающемся столбце C1, который соответствует изменяемому столбцу C2, в столбец C1 заносится новое значение столбца C2;
(ii) если в правиле модификации указано SETNULL, то во всех уникально соответствующих строках, содержащих не неопределенное значение в ссылающемся столбце, который соответствует изменяемому столбцу, проставляется неопределенное значение;
iii) если в правиле модификации указано SETDEFAULT, то во всех уникально соответствующих строках, содержащих не неопределенное значение в ссылающемся столбце, который соответствует изменяемому столбцу, проставляется значение по умолчанию;
Все строки, помеченные для удаления, реально удаляются в конце выполнения оператора SQL до проверки каких-либо ограничений целостности.
Проверочное ограничение целостности определяется следующим синтаксическим правилом:
::=
CHECK
Пояснения:
Условие поиска не должно содержать спецификации цели уничтожение данный спецификации динамического параметра, уничтожение данный также спецификации агрегатной функции, не содержащейся в подзапросе.
Если определение проверочного ограничения содержится в операторе определения временной таблицы со спецификацией ONCOMMITPRESERVEROWS или в операторе определения временной таблицы со спецификацией ONCOMMITPRESERVEROWS, то никакой подзапрос в условии поиска не должен ссылаться на временную таблицу, определенную или объявленную со спецификацией ONCOMMITDELETEROWS.
Утверждения целостности определяются следующими синтаксическими правилами:
::=
CREATE ASSERTION
[ ]
::=
CHECK
Пояснения:
Если в определении утверждения целостности не специфицированы атрибуты ограничения, то по умолчанию принимаются атрибуты INITIALLYIMMEDIATENOTDEFERRABLE.
Условие поиска не должно содержать спецификацию цели или спецификацию динамического параметра.
Никакое выражение запроса в условии поиска не должно содержать ссылку на временную таблицу.
Утверждение целостности не удовлетворяется в том уничтожение данный только в том случае, когда результат вычисления условия поиска есть false.
3.5.3. Оператор изменения схемы таблицы
Оператор изменения схемы таблицы (ALTERTABLE), для которого не было аналогов в стандарте SQL/89, предназначен для изменений в начальном определении таблицы. Оператор имеет следующий синтаксис:
::=
ALTER TABLE
::=
|
|
|
|
Пояснения:
Можно изменять схему любой базовой таблицы за исключением объявляемой локальной временной таблицы.
Определение добавления столбца позволяет добавить к таблице новый столбец. Конструкция имеет следующий синтаксис:
::=
ADD [ COLUMN ]
Пояснения:
Каждое значение, содержащееся в столбце после его добавления к таблице, есть значение этого столбца по умолчанию.
Спецификация определения столбца в операторе ALTERTABLE имеет то же действие, что спецификация определения столбца в определении таблицы. В частности, степень таблицы увеличивается на единицу, уничтожение данный порядковый номер добавляемого столбца устанавливается равным новой степени таблицы.
Определение изменения столбца позволяет установить или отменить значение этого столбца по умолчанию. Конструкция имеет следующий синтаксис:
::=
ALTER [ COLUMN ]
::=
|
::=
SET
::=
DROP DEFAULT
Пояснения:
В результате выполнения спецификации описатель существующего столбца таблицы изменяется в соответствии с указанным действием.
Если указано DROPDEFAULT, соответствующий столбец должен иметь значение по умолчанию.
Определение удаления столбца позволяет ликвидировать указанный столбец таблицы. Конструкция имеет следующий синтаксис:
::=
DROP [ COLUMN ]
::= CASCADE | RESTRICT
Пояснения:
Если в определении удаления столбца указано RESTRICT, то на удаляемый столбец не должно быть ссылок в выражении запроса любого существующего представления уничтожение данный в условии поиска любого существующего ограничения, кроме табличных ограничений, ссылающихся только на этот столбец уничтожение данный входящих в описание данной таблицы.
Если в определении удаления столбца указано CASCADE, то любой зависимый объект уничтожается при выполнении неявного оператора REVOKE (см. ниже).
Пусть A обозначает текущий идентификатор авторизации. Пусть T - имя таблицы, для которой выполняется оператор ALTERTABLE, уничтожение данный C - имя удаляемого столбца. Тогда при удалении столбца неявно выполняется следующий оператор от имени текущего системного идентификатора авторизации: REVOKEINSERT(CN), UPDATE(CN), REFERENCES(CN) ONTABLETN FROMACASCADE.
Пусть V - имя любого представления, ссылающегося на столбец C таблицы T. При удалении столбца неявно выполняется следующий оператор от имени текущего системного идентификатора авторизации: DROPVIEWVNCASCADE.
Идентифицируемый столбец уничтожение данный его описатель уничтожаются.
Степень T уменьшается на единицу. Порядковые номера всех столбцов с порядковым номером больше чем у C уменьшаются на единицу.
Определение добавления табличного ограничения имеет следующий синтаксис:
::=
ADD
Это определение не нуждается в пояснениях.
Определение уничтожения табличного ограничения имеет следующий синтаксис:
::=
DROP CONSTRAINT
Пояснения:
Пусть T имя таблицы, упоминаемой в операторе ALTERTABLE, уничтожение данный TC - имя уничтожаемого ограничения целостности.
Если TC является ограничением уникальности уничтожение данный существует ссылочное ограничение RC со ссылкой на таблицу T по столбцам уникальности TC, то будем говорить, что RC зависит от TC.
Если указано RESTRICT, то никакое табличное ограничение не должно зависеть от TC.
Если указано CASCADE, то все зависимые объекты уничтожаются при выполнении неявного оператора ALTERTABLE (см. ниже).
Пусть TCN2 - имя любого табличного ограничения, зависящего от TC, уничтожение данный пусть T2 - имя таблицы, определение которой включало TCN2. Тогда выполняется неявный оператор ALTERTABLET2 DROPCONSTRAINTTCN2 CASCADE.
Описатель TC удаляется из описания таблицы T.
Идентифицированное табличное ограничение уничтожение данный его описатель разрушаются.
3.5.4. Средства определения представлений
Представляемая таблица, или просто представление создается с помощью оператора CREATEVIEW, который похож на соответствующий оператор языка SQL/89, но обладает существенно расширенными возможностями. Для полноты мы опишем этот оператор достаточно подробно. Как обычно, начнем со сводки синтаксических правил:
::=
CREATE VIEW [
]
AS
[ WITH [ ] CHECK OPTION ]
::=
CASCADED | LOCAL
::=
Пояснения:
Выражение запроса не должно содержать спецификацию цели или динамического параметра.
Имя определяемого представления не должно содержаться в какой-либо ссылке на таблицу, содержащейся в выражении запроса (другими словами, не допускаются рекурсивные определения представлений).
В выражении запросов не должны встречаться имена временных объявляемых таблиц.
Если выражение запроса является обновляемым, то уничтожение данный определяемое представление является обновляемым. В противном случае представляемая таблица - только читаемая.
(a) выражение запроса является обновляемым в том уничтожение данный только в том случае, когда содержит только выражение запроса QE или спецификацию запроса QS и
(i) выражение запроса содержит QS или QS, не включающие выражение запроса без соединения с операторами UNION или EXCEPT;
(ii) выражение запроса содержит QE или QS, не включающие терм запроса без соединения с оператором INTERSECT;
(iii) QE или QS являются обновляемыми;
(b) спецификация запроса QS является обновляемой в том уничтожение данный только в том случае, когда
(i) в QS не специфицировано DISTINCT;
(ii) каждое выражение, содержащееся в списке выборки QS, состоит из ссылки на столбец, уничтожение данный ни одна ссылка на столбец не появляется более одного раза;
(iii) раздел FROM табличного выражения, непосредственно входящего в QS, содержит в точности одну ссылку на таблицу, указывающую на базовую таблицу или на обновляемую порождаемую таблицу;
(iv) таблица, на которую содержится ссылка в разделе FROM верхнего уровня, не должна использоваться в подзапросах, входящих в раздел FROM;
(v) табличное выражение, непосредственно содержащееся в QS, не должно включать разделы GROUPBY уничтожение данный HAVING;
(c) порождаемая таблица является обновляемой в том уничтожение данный только в том случае, когда обновляемым является выражение запроса, содержащееся в табличном подзапросе;
(d) соответствующие синтаксические правила уничтожение данный пояснения содержатся в разд. 3.3 (мы сознательно не говорили в этом разделе о правилах обновляемости, потому что они больше связаны с представлениями).
Число имен столбцов в списке столбцов представления должно совпадать со степенью таблицы, специфицированной выражением запроса.
Если в определении представления содержится раздел WITHCHECKOPTION, то представление должно быть обновляемым.
Если специфицировано WITHCHECKOPTION без задания раздела уровней (levelsclause), то по умолчанию полагается указание класса CASCADED.
Если в определении представления специфицирован список столбцов представления, то i-тый столбец представления имеет i-тое имя из этого списка. В противном случае имена столбцов представления совпадают с именами столбцов таблицы, специфицируемой выражением запроса.
Набор привилегий, которые получает создатель по отношению к определяемому представлению, определяется сравнительно громоздким набором правил уничтожение данный в конечном счете зависит от набора привилегий, которыми располагает создатель по отношению к базовым таблицам, лежащим в основе представления, уничтожение данный от того, является ли представление обновляемым.
В соответствии с правилами обновляемости представления, для каждой строки обновляемого представления существует уничтожение данный только одна строка базовой таблицы, на которой в конечном счете основывается это представление. Занесение новой строки, удаление или модификация существующей строки приводит к выполнению соответствующей операции над строками этой базовой таблицы.
Пусть V1 - представление. По определению V1 перекрывает (span) V1, уничтожение данный V1 перекрывает представление V2, если V2 используется в определении V1.
Под операцией обновления понимаются операция INSERT уничтожение данный позиционная, поисковая, динамическая позиционная уничтожение данный подготавливаемая динамическая позиционная операции UPDATE.
Если представление V1 перекрывает представление V2, в определении V2 содержался раздел WITHCHECKOPTION, уничтожение данный в результате выполнения операции обновления V1 возникает строка, невидимая в V2, то
(a) если в определении V1 было указано CASCADED, то вырабатывается исключительное условие;
(b) если в определении V1 было указано LOCAL уничтожение данный в результате выполнения операции обновления возникает строка, видимое в таблице, на которой непосредственно определено представление V2, то вырабатывается исключительное условие.
Проверка ограничения WITHCHECKOPTION выполняется в конце каждой операции обновления.
3.5.5. Операторы определения уничтожение данный изменения определения домена
Эти операторы служат для определения домена, который в дальнейшем можно использовать для определения столбцов. Оператор определения (создания) домена имеет следующий синтаксис:
::= C
REATE DOMAIN [ AS ]
[ ]
[ ... ]
[ ]
::=
[ ]
[ ]
Синтаксис раздела умолчаний совпадает с синтаксисом раздела умолчаний в определении столбца (см. п. 3.5.1).
Пояснения:
Пусть D1 - некоторый домен. D1 используется в ограничении домена DC в том уничтожение данный только в том случае, когда условие поиска DC содержит либо имя D1, либо имя некоторого ограничения домена D2. Домен не может использоваться в своем собственном ограничении.
Для каждого ограничения домена
(a) если атрибуты ограничения неспецифицированы, неявно полагаются указанными атрибуты INITIALLYIMMEDIATENOTDEFERRABLE.
(b) если неспецифицировано имя ограничения, по умолчанию неявно предполагается указание имени ограничения, зависящего от реализации.
Пусть DSC обозначает условие поиска, входящее в ограничение домена DCD. Пусть D - имя этого домена, уничтожение данный T - имя некоторой таблицы со столбцом C, определенным на домене D. Пусть CSC обозначает копию DSC, в которой каждое вхождение VALUE заменено на C.
Ограничение DCD не удовлетворяется для C в том уничтожение данный только в том случае, когда истинно условие EXISTS (SELECT * FROMTWHERENOT (CSC)).
Оператор изменения определения домена определяется следующими синтаксическими правилами:
::=
ALTER DOMAIN
::=
|
|
|
Пояснение:
В результате выполнения оператора ALTERDOMAIN описание существующего домена изменяется в соответствии со специфицированным действием.
Раздел установки значения по умолчанию имеет следующий синтаксис:
::= SET
В результате в описатель домена заносится указанное значение по умолчанию (синтаксис раздела умолчания см. в п. 3.5.1).
Раздел уничтожения значения по умолчанию имеет следующий синтаксис:
::= DROP DEFAULT
Пояснения:
Описатель соответствующего домена должен содержать значение по умолчанию.
Пусть C обозначает множество столбцов, определенных на данном домене.
Для каждого столбца из C, если в его описателе не содержится значение по умолчанию, в него помещается значение по умолчанию из описателя домена.
Из описателя домена значение по умолчанию удаляется.
Определению добавления ограничения домена соответствует следующее синтаксическое правило:
::=
ADD
Определение не требует пояснений.
Определению уничтожения ограничения домена соответствует следующее синтаксическое правило:
::=
DROP CONSTRAINT
Смысл этого определения также очевиден.
3.5.6. Средства уничтожения элементов схемы базы данных
Для каждого из упомянутых в этом разделе операторов создания элементов схемы базы данных имеются обратные операторы уничтожения этих элементов.
Созданная ранее таблица может быть уничтожена следующим оператором:
::=
DROP TABLE
Пояснения:
Пусть уничтожается таблица с именем T.
T должна быть базовой таблицей.
T не должна быть временной объявляемой таблицей.
Если специфицировано RESTRICT, то ни в каком существующем представлении уничтожение данный ни в каком условии поиска существующего ограничения не должны содержаться ссылки на T.
Пусть A обозначает текущий идентификатор авторизации. Тогда при выполнении оператора уничтожения таблицы неявно выполняется следующий оператор: REVOKEALLPRIVILEGESONTFROMACASCADE, что при наличии спецификации CASCADE в операторе уничтожения таблицы приводит к уничтожению всех объектов, в определении которых использовалась ссылка на T.
Таблица T уничтожение данный ее дескриптор уничтожаются.
Созданное ранее представление может быть уничтожено с помощью следующего оператора:
::=
DROP VIEW
Пояснения:
Пусть V - имя уничтожаемого представления.
V должно быть именем представляемой таблицы.
Если специфицировано RESTRICT, то ни в одном существующем представлении или условии поиска существующего ограничения не должна содержаться ссылка на V.
Пусть A обозначает текущий идентификатор авторизации. При выполнении оператора уничтожения представления неявно выполняется следующий оператор: REVOKEALLPRIVILEGESONTFROMACASCADE, что при наличии спецификации CASCADE в операторе уничтожения представления приводит к уничтожению всех объектов, в определении которых использовалась ссылка на V.
Оператор уничтожения домена имеет следующий синтаксис:
::=
DROP DOMAIN
Пояснения:
Пусть D - имя уничтожаемого домена.
Если специфицировано RESTRICT, то ссылки на D должны отсутствовать в любом описателе столбца, в выражении запроса любого представления уничтожение данный в условии поиска любого ограничения.
Пусть C обозначает описатель столбца, определенного на домене D; T - имя таблицы, описатель которой включает C. C модифицируется следующим образом:
(a) из C удаляется ссылка на D, уничтожение данный в C включается копия описателя типа данных D;
(b) если C не включает раздела значения по умолчанию, уничтожение данный описатель D включает такой раздел, то в C включается раздел умолчания D;
(c) для каждого описателя ограничения домена D выполняются следующие действия:
(i) пусть TCD обозначает табличное ограничение с определяемым в реализации именем, которое порождено из проверочного ограничения домена путем замены VALUE на имя столбца C с сохранением атрибутов ограничения;
(ii) если для идентификатора полномочий текущей SQL-сессии имеются необходимые привилегии, выполняется неявный оператор ALTERTABLETADDTCD;
Пусть A - текущий идентификатор полномочий. Выполняется следующий неявный оператор REVOKE: REVOKEUSAGEONDOMAINDNFROMACASCADE
Описатель домена разрушается.
Утверждение целостности уничтожается с помощью следующего оператора:
::=
DROP ASSERTION
Пояснение:
При выполнении оператора описатель идентифицируемого утверждения целостности разрушается.
Назад |
Содержание |
Вперед
Редакция рекомендует:Введение в криптографиюБезопасность в Microsoft SQL Server 2005Регулярные выражения в PerlДесять практических рекомендаций разработчикам на Perl
Размещение рекламы - pr@citforum.ru, ICQ 232284597
Подписка на новости IT-портала CITForum.ru(библиотека, CITKIT.ru, CitCity)Новые публикации:
1 ноября
CitCity:
Глобализация мира технологий
Шаг леопарда
Куда ведут окна
CITForum:
DMR - новый стандарт радиосвязи
Обзор журнала Computer:
Планшетные ПК на службе образования
30 октября
Универсальность уничтожение данный специализация: время разбивать камни?
Конец архитектурной эпохи, или Наступило время полностью переписывать системы управления данными
CITKIT.ru:
FreeBSD 7.0 уничтожение данный ZFS
25 октября
Антипаттерны руководства командами разработки ПО
Мониторинг загрузки канала интернет-шлюза на FreeBSD
Преобразование программ на языке Scheme для облегчения компиляции в язык C
CitCity:
ИнфоКом-2007 уничтожение данный аналогичный ИнфоЛинукс
23 октября
CitCity:
Третья сенсация осени
Тайны Linux-скандала: суды, кражи уничтожение данный самоубийства
CITKIT.ru:
Ubuntu 7.10 Gutsy Gibbon: родословная Бесстрашного Гиббона
Блеск уничтожение данный нищета Ajax
18 октября
PostgreSQL 8.3
CITKIT.ru:
И снова о массовом Linux'е
ОСТОРОЖНО: ВИНДОФИЛИЯ!
16 октября
CitCity:
FAQ по ноутбукам
Что наша жизнь? Игра!
CITKIT.ru:
Еще раз про Zenwalk
Взгляд из башни из слоновой кости, или нужен ли массовый Linux?
11 октября
CitCity:
Операционные BI-технологии. Основные понятия
Операционные BI-средства. Проблемы уничтожение данный их решения
Хранилище данных в реальном времени. Инструменты интеграции с OLTP-системами
CITKIT.ru:
Ба, знакомые все лица, или снова Linuxland
9 октября
Пригоден ли один размер для всех?
Часть 2: результаты тестовых испытаний
CitCity:
Обзор "бюджетных ноутбуков" стоимостью 600-700 у.е.
Выбор персонального компьютера разных "весовых" категорий
Нанотехнологии - Клондайк или панацея?
2 октября
CITKIT.ru:
Nexenta OS - гибрид Linux'а уничтожение данный OpenSolaris'а
Изучаем ZFS
Восстановление данных под Linux
27 сентября
CitCity:
Модели построения отношений между службами информационной безопасности уничтожение данный IT
Брешь в конфиденциальности (Практика использования сети Интернет в конкурентной разведке)
Как защитить сеть: 5 советов
CITKIT.ru:
А.Федорчук: Ум хорошо. А два лучше?
25 сентября
«Один размер пригоден для всех»: идея, время которой пришло уничтожение данный ушло
CitCity:
Что нужно знать о домашнем кинотеатре
Организация качественного звука на компьютере
Собираем музыкально-кинотеатральный компьютер (системный блок)
20 сентября
За пределами реляционных баз данных: доступ к базам данных не ограничивается возможностями SQL
CITKIT.ru:
Графический инсталлятор для FreeBSD
ZFS уничтожение данный FreeBSD. Переводы документации
Поддержка ZFS включена в базовую систему FreeBSD
ZFS: руководство по быстрому старту
Корневая файловая система на ZFS
ZFS: руководство по тюнингу
18 сентября
CitCity:
Урожай сенсаций:
QNX, открой личико!
История одного банкротства. Конец SCO?
CITForum:
QNX: очень краткие заметки
13 сентября
Первые шаги к управлению всемирной информацией. Беседа с Патрицией Селинджер (Перевод: Сергей Кузнецов)
Принципы организации IP-телефонии на базе решений Cisco Systems
CitCity:
Корпоративная культура: построение эффективного IT-отдела. 12 простых правил для руководителя
Cтили работы в компании
11 сентября
Решения "растут" на деревьях
Знакомство с PDL (Portable Dynamic Loader)
Обзоры журнала Computer:
В поисках новых механизмов поиска во Всемирной Паутине
Что реально в виртуальной реальности?
6 сентября
CitCity:
ITIL уничтожение данный ITIL3
Построение отчетности в рамках ITSM илиВзгляд ITSM-консультанта на основные проблемы реализации проектов по построению отчетности на примере процесса управления инцидентами
Основные характеристики современного Хранилища данных
Единое представление клиентов в Хранилище уничтожение данный его использование для решения управленческих задач
Этапы реализации прогнозной аналитики. Роль Хранилищ данных
Мобильная перспектива. Какими станут ноутбуки в ближайшее время?
4 сентября
Designing for FAILURE - ключ к успеху?
Беседа с Брюсом Линдсеем
Интерфейс Siebel => Oracle Server => Express Server
Глубинный анализ данных в режиме реального времени: Oracle Real Time Decisions
30 августа
Сергей Кузнецов: Серебряные пули компьютерной индустрии уничтожение данный учение Экклезиаста
Восход уничтожение данный закат CORBA
Corba: ушла, но (будем надеяться) не забыта
Стандарт профессиональной радиосвязи TETRA. Преимущества уничтожение данный возможности
JavaScript: создаем Человека
28 августа
Oracle: работать с текстовыми документами очень просто
Текстовые документы в Oracle: разнообразие источников, форматов, запросов
Как работать с картотекой (набором данных с краткими описаниями)
Как классифицировать текстовые документы в Oracle
22 августа
CitCity:
Oracle достигла возраста зрелости
(Сергей Кузнецов)
Интеграция приложений такая, как она есть (Глеб Ладыженский)
"Большая восьмерка" для оператора
CITForum:
64 бита: расставим точки над большим "I"
15 августа
Когда счет идет на микросекунды
Тип данных TIME
Новая версия СУБД Oracle - Oracle 11g
Закись азота для ПК: Intel Turbo Memory
Доступные сетевые принтеры
8 августа
Серверы в масштабе российского предприятия
Хранение данных: задачи, решения, перспективы
И снова терминалы
CITKIT.ru:
Debian vs Ubuntu: еще один великолепный миф?
Сказ про TeXmacs, или как прикручивали шрифты TeX к графическому режиму, уничтожение данный что из этого получилось
Мультизагрузочный CD с использованием GRUB
1 августа
CitCity:
Информационная безопасность ERP-систем
Корнями - в древность, кроной - в современный бизнес
(о рынке информационной безопасности)
Обзор журнала Computer:
Open Source уничтожение данный проприетарная архитектурная революция
CITKIT.ru:
hwreport: 1 к 84-м в пользу "source based"
Начал ли звонить колокол? (дискуссия Windows vs Linux)
25 июля
CitCity:
Беседа Марго Зельцер с Майклом Стоунбрейкером.
Перевод: Сергей Кузнецов
SideShow: Windows с изнанки
Перспективы развития стандартов третьего поколения в России уничтожение данный в мире
От SMB к Enterprise. Плох тот солдат, который не хочет стать генералом
Лучше выпить, чем говорить по телефону?
18 июля
Влияние исследований на технологию промежуточного программного обеспечения
Семантическая реконсиляция прикладных данных на основе моделей
Демоны (из серии "Программирование для Linux")
11 июля
Почему формальную реляционную модель данных можно рассматривать как основу безимпедансных систем
Адаптивное управление по прецедентам, основанное на классификации состояний управляемых объектов
Методы композиции уничтожение данный декомпозиции исполняемых UML моделей
CITKIT.ru:
Windows. Господа критикисты, стыдитесь!
4 июля
Лекции из курса А.Марченко "Введение в программирование на C# 2.0":
GDI+
Основы ADO .NET
К статье OFSA. Основные принципы добавлена
Часть 5. FDM как хранилище данных финансовой информации
CITKIT.ru:
Чем удобна Вынь-да?
28 июня
Особенности применения технологии UniTESK для тестирования функций мобильности в протоколе IPv6
Разработка ОС реального времени для цифрового сигнального процессора
CitCity:
Карьера! Как много в этом слове...
О планировании карьеры, плане профессионального развития уничтожение данный не только...
CITKIT.ru:
Памятка начинающему снобу
26 июня
Win32 в машинных кодах
Верификация компиляторов - систематический подход
Использование контрактных спецификаций для автоматизации функционального тестирования моделей аппаратного обеспечения
Тестирование трансляторов: проблема построения оракула для генератора
21 июня
Тестирование компонентов, взаимодействующих посредством удаленного вызова методов
CITKIT.ru:
Открытые стандарты уничтожение данный новые формы международного сотрудничества
Zenwalk: хроника последнего обновления
Заметки сноба, или Беру свои слова обратно (дискуссия про анонимусов)
19 июня
Текущее состояние уничтожение данный перспективы развития инфраструктуры LSB
Об одном методе сокращения набора тестов
Методика автоматизированной проверки возвращаемых кодов ошибок при тестировании программных интерфейсов
CITKIT.ru:
Zenwalk: управление пакетами
Linux - должен? (дискуссионный клуб)
14 июня
Пересекая границы: специфика разработки ПО распределенной командой
Групповая разработка уничтожение данный организация коллектива. Лекция из курса "Введение в технологию программирования"
Компьютерные технологии на благо каждого человека. Обзор майского номера журнала Computer
CITKIT.ru:
5 лет спустя (дискуссия Windows vs Linux)
Все публикации >>>
IT-консалтингSoftware EngineeringПрограммированиеСУБДБезопасностьInternetСетиОперационные системыHardware
Информация для рекламодателей
PR-акции, размещение рекламы - pr@citforum.ru, тел. +7 495 4119920, ICQ 232284597
Пресс-релизы - pr@citcity.ru
Послать комментарийИнформация для авторовThis Web server launched on February 24, 1997Copyright © 1997-2000 CIT, © 2001-2007 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме уничтожение данный какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...
разделы
асбест хризотиловый
архыз
итальянский вина
ивановец
ливнесборные решетка
холодильник zanussi
купить блендер
купить ниппель перех
обрезание
вагонка половой доска
хлеборезка ахм
вспучивающийся краска
подбор контрацепция
мужчина выходной
черный кофе
нужный билет
ваза 2113
покрышка бриджстоун
решетка ливнесборная
нард online
витрина мороженый
велюкс
купить отвед
скраб-пилинг
rittal
raymond weil
кислород
выделение кислорода
пежо
вызов врач
двухтарифные электросчетчик
fag
сварочный пост
красный объявление
оркестр креольский танго
спецобувь оптом
kyiv apartaments service
огнестойкий краска
против рак
дирижабль
восстановление файл
купить ниппель
summer кухонный
лечение папиллома
управление кострома
факсимиле
асбест а7-450
развальцовка подогреватель
варочный поверхность hansa
вино заказ
госпиталь мэш
акриловый вкладыш
беременность род
summer кухонный
omega
автоподъемник
ивановец
пассажирский лифт
корпаративные праздник
плата видеозахвата
скачать короткий нард
прайс эфирный антенна
уничтожение данный