Учебная работа. Доклад: Базы данных SQL
Этот эталон описывает синтаксис и семантику 2-ух языков баз данных:
язык определения схем (SQL-DLL) для объявления структур и ограничений целостности базы данных SQL.
язык модулей и манипулирования данными (SQL-DML) для объявления процедур базы данных и выполняемых операторов в определенной прикладной программке базы данных.
Этот эталон описывает логические структуры данных и базисные операции для базы данных SQL. Он обеспечивает многофункциональные способности для проектирования, доступа, поддержания, управления и защиты базы данных.
Этот эталон обеспечивает средство для мобильности определений базы данных и прикладных программ меж надлежащими эталону реализациями.
Этот эталон описывает два уровня и отдельное средство поддержания целостности. Уровень 2 — это полный язык баз данных SQL, не включающий средство поддержания целостности. Уровень 1 — это подмножество уровня 2, определенное в разделе 9 «Уровни» .
Планируется доп язык SQL как дополнение к этому эталону. Главными темами, обсуждаемыми для этого приложения, являются улучшенное управление транзакциями, определение неких правил, объявляемых в определенной реализации, усовершенствованные средства работы с знаками и поддержка государственных наборов знаков.
Средство поддержания целостности состоит в определении:
требуемых ограничений на ссылки меж таблицами;
проверочных ограничений на строчки таблицы;
значений столбца по дефлоту при занесении строчки в таблицу.
В приложениях к эталону определяется синтаксис включения операторов манипулирования данными SQL в обычную во всех других отношениях прикладную программку. Таковой синтаксис определяется как сокращенная нотация для обычной прикладной программки, в какой интегрированные операторы SQL изменены очевидными «вызовами» процедур базы данных, содержащими операторы SQL.
Этот эталон применим к реализациям, имеющимся в среде, которая может включать прикладные языки программирования, языки запросов уровня конечного юзера, системы генерации отчетов, системы словарей данных и распределенные коммуникационные системы, также разные средства проектирования баз данных, администрирования баз данных и оптимизации производительности.
2. Ссылки
ISO 1539, Programming Languages — FORTRAN (endorsement by ISO of American National Standard X3.9).
ISO 1989, Programming Languages — COBOL (endorsement by ISO of American National Standard X3.23).
ISO 6160, Programming Languages — PL/1 (endorsement by ISO of American National Standard X3.53).
ISO 7185, Programming Languages — Pascal (endorsement by ISO of British Standard 6192 for the English text).
3. Обзор
3.1 Организация
Этот эталон организован последующим образом:
В 3.2, «Нотация» и 3.3, «Соглашения» определяются нотации и соглашения, применяемые в этом эталоне.
В 3.4, «Соответствие» определяется аспект соответствия.
В Разделе 4, «Понятия» определяются определения и представляются понятия, применяемые в определении SQL.
В Разделе 5, «Общие элементы» определяются элементы языка, встречающиеся в нескольких частях языка SQL.
В Разделе 6, «язык определения схем» определяются средства SQL для определения базы данных.
В Разделе 7, «язык модулей» определяются модели и процедуры SQL.
В Разделе 8, «язык манипулирования данными» определяются операторы манипулирования данными SQL.
В Разделе 9, «Уровни» определяются два уровня SQL и средство поддержания целостности.
3.2 Нотация
В качестве синтаксической нотации в этом эталоне употребляются БНФ («Бэкусовские обычные формы» либо «Формы Бэкуса-Наура) со последующими расширениями:
Квадратные скобки ([]) обозначают необязательные элементы.
Многоточия (…) обозначают элементы, которые могут повторяться один либо наиболее раз.
Фигурные скобки ({ }) объединяют последовательности частей.
В синтаксисе БНФ продукционный знак <A> определяется как содержащий продукционный знак <B>, если <B> заходит в расширение <A>. Если <A> содержит <B>, то <B> содержится в <A>. Если <A> содержит <B>, то <A> является «содержащим» продукционным эмблемой для <B>.
3.3 Соглашения
Синтаксические элементы этого эталона определяются в последующих определениях:
Функция: куцее предложение о предназначении элемента.
формат: БНФ-определение синтаксиса элемента.
Синтаксические правила: доп синтаксические ограничения, которым должен удовлетворять элемент, не выраженные в БНФ.
Общие правила: поочередная спецификация эффекта выполнения элемента.
В Синтаксических правилах термин «должен» описывает условия, которым должен удовлетворять хоть какой вариант языка SQL, синтаксически соответственный эталону. язык SQL синтаксически соответствует эталону, если соответствует и Форматам и Синтаксическим правилам.
В Общих правилах термин «должен» описывает условия, которые проверяются во время выполнения операторов SQL. Если все эти условия истинны, то оператор производится удачно и в параметр SQLCODE устанавливается определенное неотрицательное число. Если какое-либо из критерий неверно, оператор не производится удачно, не влияет на состояние базы данных, и в параметр SQLCODE устанавливается определенное реализатором отрицательное число.
В соответственной эталону реализации не требуется выполнение четкой последовательности действий, определенных в Общих правилах, но должен достигаться этот же эффект, что и при выполнении данной нам последовательности. термин «практически» употребляется в Общих правилах для того, чтоб выделить деяния, итог которых быть может достигнут в реализации остальным методом.
термин «долговременно хранимый объект» употребляется для характеризования таковых объектов, как <модуль> (<module>) и <схема> (<schema>), которые создаются и уничтожаются при помощи устройств, определенных реализатором.
В этом эталоне разделы начинаются с новейших страничек с нечетными номерами, и, начиная с «Общих частей» Раздела 5 до «Языка манипулирования данными» Раздела 8 , подразделы начинаются с новейшей странички. Возникающие в итоге пустоты несущественны.
3.4 Соответствие
В этом эталоне определяются надлежащие язык SQL и реализации SQL. Соответственный эталону язык SQL должен придерживаться Формата БНФ и соответственных Синтаксических правил. Соответственная реализация SQL обязана обрабатывать соответственный эталону язык SQL в согласовании с Общими правилами.
В реализации, провозглашаемой соответственной SQL-DDL, должен обрабатываться SQL-DDL (<схема> (<schema>)) на уровне 1 либо уровне 2.
В реализации, провозглашаемой соответственной SQL-DML, на уровне 1 либо уровне 2 должны обрабатываться:
Прямые вызовы операторов языка манипулирования данными SQL (<операторы SQL> (<SQL statement>)) и/либо
язык модулей (<модуль> (<module>)) и/либо
один либо наиболее из
a) COBOL со интегрированным SQL (<программка на языке COBOL со интегрированным SQL> (<embedded SQL COBOL program>));
b) FORTRAN со интегрированным SQL (<программка на языке FORTRAN со интегрированным SQL> (<embedded SQL FORTRAN program>));
c) Pascal со интегрированным SQL (<программка на языке Pascal со интегрированным SQL> (<embedded SQL Pascal program>));
d) PL/1 со интегрированным SQL (<программка на языке PL/1 со интегрированным SQL> (<embedded SQL PL/1 program>)).
В реализации, провозглашаемой стопроцентно соответственной SQL, обязано обеспечиваться на уровне 1 либо уровне 2 соответствие SQL-DDL и соответствие SQL-DML.
Надлежащие эталону реализации могут обеспечивать доп средства либо способности, не специфицируемые сиим эталоном. Реализация остается соответственной эталону, даже если в ней обеспечиваются пользовательские функции для обработки языка, не соответственного эталону SQL либо для обработки языка, соответственного эталону языка SQL, не подходящим эталону образом.
При провозглашении соответствия этому эталону обязано устанавливаться:
Какой из последующих типов соответствия провозглашается:
a) Полное соответствие SQL на уровне 1;
b) Полное соответствие SQL на уровне 2;
c) Cоответствие SQL-DDL на уровне 1;
d) Cоответствие SQL-DDL на уровне 2;
e) Cоответствие SQL-DML на уровне 1;
f) Cоответствие SQL-DML на уровне 2.
Какие из последующих способностей реализованы:
a) Ровная обработка операторов языка манипулирования данными SQL;
b) язык модулей (<модуль> (<module>));
c) COBOL со интегрированным SQ (<программка на языке COBOL со интегрированным SQL> (<embedded SQL COBOL program>));
d) FORTRAN со интегрированным SQL (<программка на языке FORTRAN со интегрированным SQL> (<embedded SQL FORTRAN program>));
e) Pascal со интегрированным SQL (<программка на языке Pascal со интегрированным SQL> (<embedded SQL Pascal program>));
f) PL/1 со интегрированным SQL (<программка на языке PL/1 со интегрированным SQL> (<embedded SQL PL/1 program>)).
Реализовано ли средство поддержания целостности.
Этот эталон не описывает способ либо время связывания прикладных программ и компонент системы управления базами данных.
4. Понятия
4.1 Огромного количества
Огромное количество есть неупорядоченный набор разных объектов.
Мультимножество есть неупорядоченный набор объектов, которые не непременно различны.
Последовательность есть упорядоченный набор объектов, которые не непременно различны.
Мощность набора есть число объектов в этом наборе. Если не обсуждено неприятное, хоть какой набор быть может пустым.
4.2 Типы данных
Тип данных есть огромное количество представимых значений. Логическое
Неопределенное
Не неопределенное значения.
4.2.1 Символьные строчки
Символьная строчка состоит из последовательности знаков из определенного в реализации огромного количества знаков. Символьная строчка владеет длиной, которая является положительным целым числом, определяющим число знаков в последовательности.
Все символьные строчки сравнимы. Символьная строчка схожа иной символьной строке, если и лишь если она равна данной нам символьной строке в согласовании с правилами сопоставления, определенными в 5.11, «<Предикат сопоставления> (<comparison predicate>)».
4.2.2 Числа
Число — это или четкое численное
Каждое четкое численное
Ориентировочные численные значения состоят из мантиссы и порядка. Мантисса — это численное
При присвоении четкого численного значения элементу данных либо параметру, представляющему четкое численное значения представляется в мотивированном типе данных. Значение преобразуется таковым образом, чтоб получить мотивированные точность и масштаб.
При присвоении четкого либо ориентировочного численного значения элементу данных либо параметру, представляющим ориентировочное численное значения представляется в мотивированном типе данных. Значение преобразуется таковым образом, чтоб получить мотивированную точность.
4.3 Столбцы
Столбец есть мультимножество значений, которое может изменяться во времени. Все значения 1-го столбца являются значениями 1-го типа и значениями в одной таблице. Значение столбца — малый элемент данных, которые могут быть выбраны из таблицы, и малый элемент данных, которые могут быть изменены.
Столбец имеет описание и порядковую позицию в таблице. Описание столбца включает его тип данных и указание о том, распространяется ли на столбец ограничение содержать лишь не неопределенные значения. Описание столбца символьных строк описывает его атрибут длины. Описание столбца ориентировочных чисел описывает точность этих чисел. Описание столбца четких чисел описывает точность и масштаб этих чисел.
Именованный столбец есть столбец именованной таблицы либо столбец, который наследует описание именованного столбца. Описание именованного столбца включает его имя.
4.4 Таблицы
Таблица есть мультимножество строк. Строчка есть непустая последовательность значений. Все строчки одной таблицы владеют схожей мощностью и содержат значения всякого столбца данной нам таблицы. I-ое
Степень таблицы есть число столбцов данной нам таблицы. В хоть какой момент времени степень таблицы та же, что и мощность каждой из ее строк, и мощность таблицы та же, что и мощность всякого из ее столбцов.
Таблица имеет описание. Это описание включает описание всякого из столбцов таблицы.
Базисная таблица есть именованная таблица, определенная через <определение таблицы> (<table definition>). Описание базисной таблицы включает ее имя.
Порожденная таблица — это таблица, порожденная прямо либо косвенно из одной либо нескольких остальных таблиц методом вычисления <спецификации запроса> (<query Specification>). Значениями порожденной таблицы являются значения определяющих таблиц при ее порождении.
Представляемая таблица есть именованная таблица, определенная через <определение представления> (<view definition>). Описание представляемой таблицы включает ее имя.
Таблица является или изменяемой (updatable), или лишь читаемой. Операции занесения, модификации и удаления допускаются для изменяемых таблиц и не допускаются для лишь читаемых таблиц.
Сгруппированная таблица есть огромное количество групп, порождаемых в процессе вычисления <раздела group by> (<group by clause>). Группа — это мульти-множество строк, в каких все значения столбца (столбцов) группирования равны. Сгруппированную таблицу можно разглядывать как набор таблиц. Множественные функции могут применяться к личным кортежам снутри сгруппированной таблицы.
Сгруппированное значения базы данных методом ограничения значений в базисных таблицах.
Ограничения целостности практически проверяются опосля выполнения всякого <оператора SQL> (<SQL statement>). Если базисная таблица, ассоциированная с ограничением целостности, не удовлетворяет этому ограничению целостности, то <оператор SQL> (<SQL statement>) не производится, и в параметр SQLCODE устанавливается определенное в реализации отрицательное число.
<Определение ограничения уникальности> (<unique constraint definition>) просит, чтоб никакие две строчки в таблице не имели схожих значений в обозначенном столбце либо столбцах.
Спецификация NOT NULL просит, чтоб никакие значения в столбце не были неопределенными значениями.
<Определение ограничения ссылок> (<referential constraint definition>) просит, чтоб для каждой строчки одной обозначенной таблицы — «ссылающейся таблицы» — значения обозначенного столбца либо столбцов или включали как минимум одно неопределенное значения обозначенного столбца либо столбцов в некой строке иной обозначенной таблицы — «ссылаемой таблицы». Ссылающаяся таблица быть может той же самой таблицей, что и ссылаемая таблица.
<Определение проверочного ограничения> (<check constraint definition>) просит, чтоб обозначенное <условие поиска> (<search condition>) не было неверно ни для какой строчки таблицы.
4.6 Схемы
<Схема> (<schema>) есть долговременно хранимый объект, определенный на языке определения схем. Он состоит из <раздела возможностей схемы> (<schema authorization clause>) и всех <определений таблицы> (<table definition>), <определений представления> (<view definition>) и <определений льгот> (<privilege definition>), узнаваемых системе для обозначенного <идентификатора возможностей> (<authorization identifier>) в среде. понятие среды определяется в реализации.
Таблицы, представления и привилегии, определенные через <схему> (<schema>), рассматриваются как «принадлежащие» либо подабающие быть «сделанными» <идентификатором возможностей> (<authorization identifier>), определенным для данной нам схемы.
В реализации могут обеспечиваться средства (такие, как DROP TABLE, DROP VIEW, ALTER TABLE и REVOKE), которые разрешают создавать, уничтожать и видоизменять определения таблиц, представлений и льгот для данного <идентификатора возможностей> (<authorization identifier>) в различные моменты времени. Но в этом эталоне рассматриваются лишь <схемы> (<schema>), представляющие определения, которые известны системе на этот момент времени.
4.7 База данных
База данных есть набор всех данных, определенных <схемами> (<schema>) в среде. понятие среды является определяемым реализацией.
4.8 Модули
<Модуль> (<module>) есть долговременно хранимый объект, определенный на языке модулей. <Модуль> (<module>) состоит из необязательного <имя модуля> (<module name>), <раздела языка> (<language clause>), <раздела возможностей модуля> (<module authorization clause>), ноля либо наиболее курсоров, определенных через <объявление курсора> (<declare cursor>) и одной либо наиболее <процедур> (<procedure>).
Прикладная программка есть сектор выполняемого кода, содержащий, может быть, несколько подпрограмм. Единственный <модуль> (<module>) ассоциируется с прикладной программкой в течение ее выполнения. Прикладная программка обязана быть ассоциирована с самое большее одним <модулем> (<module>). метод установления данной нам ассоциации, включающий вероятное требование выполнения некого определенного в реализации оператора, определяется в реализации.
4.9 Процедуры
<Процедура> (<procedure>) состоит из <имени процедуры> (<procedure name>), последовательности <объявлений характеристик> (<parameter declaration>) и 1-го <оператора SQL> (<SQL statement>).
Прикладная программка, ассоциированная с <модулем> (<module>), может обращаться к <процедурам> (<procedure>) этого <модуля> (<module>) через оператор «call», в каком определяется <имя процедуры> (<procedure name>) данной нам <процедуры> (<procedure>) и задается последовательность значений характеристик, число и <тип данных> (<data type>) которых соответствует <объявлениям характеристик> (<parameter declaration>) данной нам <процедуры> (<procedure>). Вызов <процедуры> (<procedure>) приводит к выполнению содержащегося в ней <предложения SQL> (<SQL statement>).
4.10 Характеристики
Параметр объявляется в <процедуре> (<procedure>) через <объявление параметра> (<parameter declaration>). <Объявление параметра> (<parameter declaration>) описывает <тип данных> (<data type>) собственного значения. Параметр или воспринимает, или поставляет
4.10.1 Параметр SQLCODE
Параметр SQLCODE — это особый целый параметр. Его
4.10.2 Параметр-индикатор
Параметр-индикатор — это целый параметр, который указывается опосля другого параметра. Его основное предназначение — демонстрировать, может ли
4.11 Обычные языки программирования
Эталон описывает деяния <процедур> (<procedure>) в <модулях> (<module>), когда эти <процедуры> (<procedure>) вызываются программками, надлежащими определенным обычным языкам программирования. определения «обычная программка на языке COBOL», «обычная программка на языке FORTRAN», «обычная программка на языке Pascal» и «обычная программка на языке PL/1″ относятся к программкам, отвечающим аспектам соответствия эталонов, перечисленных в разделе 2, «Ссылки» .
4.12 Курсоры
Курсор определяется через <объявление курсора> (<declare cursor>). Для всякого <объявления курсора> (<declare cursor>) в <модуле> (<module>) курсор практически cоздается тогда, когда появляется транзакция (см. 4.16, «Транзакции»), ссылающаяся на этот <модуль> (<module>), и уничтожается, когда эта транзакция заканчивается.
Курсор находится или в открытом состоянии, или в закрытом состоянии. Изначальное состояние курсора — закрытое. Курсор перебегает в открытое состояние через <оператор открытия> (<open statement>) и ворачивается в закрытое состояние через <оператор закрытия> (<close statement>), <оператор фиксации> (<commit statement>) либо <оператор отката> (<rollback statement>).
Курсор в открытом состоянии описывает таблицу, порядок строк в данной нам таблице и позицию относительно этого порядка. Если <объявление курсора> (<declare cursor>) не включает <раздел упорядочивания> (<order by clause>) либо включает <раздел упорядочивания> (<order by clause>), не стопроцентно определяющий порядок строк, то строчки в таблице имеют порядок, стопроцентно либо отчасти определенный в реализации.
Снутри одной транзакции, если порядок строк не определен либо не стопроцентно определен через <раздел упорядочивания> (<order by clause>), относительная позиция 2-ух строк будет в общем случае одна и та же при любом открытии курсора. порядок может изменяться от 1-го раза к другому, если изменяются значения базы данных либо значения характеристик, обозначенных в <спецификации запроса> (<query Specification>) в <объявлении курсора> (<declare cursor>).
В различных транзакциях, даже когда значения базы данных и значения характеристик, обозначенных в <спецификации запроса> (<query Specification>), схожи, порядок строк, определяемый схожими <спецификациейкурсора>(<cursor Specification>) и <оператором открытия> (<open statement>), быть может разным.
Позиция курсора в открытом состоянии быть может перед определенной строчкой, на определенной строке либо опосля крайней строчки. Если курсор установлен на строчку, то эта строчка является текущей строчкой курсора. Курсор быть может установлен перед первой строчкой либо опосля крайней строчки, даже если таблица пуста.
<Оператор чтения> (<fetch statement>) продвигает позицию открытого курсора на последующую строчку в порядке этого курсора и выбирает значения столбцов данной нам строчки. <Оператор модификации: позиционный> (<update statement: positioned>) изменяет текущую строчку курсора. <Оператор удаления: позиционный> (<delete statement: positioned> удаляет текущую строчку курсора.
Если курсор установлен перед некой строчкой, и новенькая строчка заносится в эту позицию, то оказываемое сиим вероятное воздействие на позицию курсора, если и есть, определяется в реализации.
Если курсор установлен на некую строчку либо перед некой строчкой, и эта строчка удаляется, то курсор устанавливается перед строчкой, конкретно последующей за позицией удаленной строчки. Если таковая строчка не существует, то курсор устанавливается опосля крайней строчки.
Если при выполнении <оператора SQL> (<SQL statement>), ссылающегося на открытый курсор, возникает ошибка, то вероятное действие этого на позицию либо состояние курсора определяется в реализации.
Рабочая таблица — это таблица, возникающая вследствие открытия курсора. Приводит ли открытие курсора к созданию рабочей базисной таблицы либо рабочей представляемой таблицы, определяется в реализации.
Любая строчка рабочей представляемой таблицы порождается лишь тогда, когда курсор позиционируется на эту строчку.
Рабочая базисная таблица создается при открытии курсора и уничтожается при закрытии курсора.
4.13 Операторы
<Оператор SQL> (<SQL statement>) описывает операцию над базой данных либо операцию над курсором. <Оператор подборки> (<select statement>) читает значения из таблицы. <Оператор занесения> (<insert statement>) вносит строчки в таблицу. <Оператор модификации: поисковый> (<update statement: searched>) либо <оператор модификации: позиционный> (<update statement: positioned>) изменяет значения строк таблицы. <Оператор удаления: поисковый> (<delete statement: searched>) либо <оператор модификации: позиционный> (<delete statement: positioned>) удаляет строчки из таблицы.
4.14 Синтаксис встраивания
<программка со интегрированным SQL> (<embedded SQL host program>) (<программка на языке COBOL со интегрированным SQL> (<embedded SQL COBOL program>), <программка на языке FORTRAN со интегрированным SQL> (<embedded SQL FORTRAN program>), <программка на языке Pascal со интегрированным SQL> (<embedded SQL Pascal program>) либо <программка на языке PL/1 со интегрированным SQL> (<embedded SQL PL/1 program>)) — это прикладная программка, которая содержит текст на языке программирования и текст на языке SQL. текст на языке программирования должен удовлетворять требованиям определенного эталона языка программирования. текст на языке SQL должен состоять из 1-го либо наиболее <интегрированных операторов SQL> (<embedded SQL statement>) и (необязательно) из одной либо наиболее <встроеных секций объявлений SQL> (<embedded SQL declare section>). Это дозволяет представлять приложения базы данных в гибридной форме, в какой <операторы SQL> (<SQL statement>) прямо интегрированы в прикладную программку. Таковая гибридная прикладная программка по определению обязана быть эквивалентна обычной прикладной программке, в какой <операторы SQL> (<SQL statement>) изменены на вызовы <процедур> (<procedure>) SQL в отдельном <модуле> (<module>) SQL.
4.15 Привилегии
Льгота разрешаетвыполнить данную категорию <действий> (<action>) над обозначенной таблицей либо представлением на базе обозначенного <идентификатора возможностей> (<authorization identifier>).Допустимыми<действиями> (<action>) являются INSERT, DELETE, SELECT, UPDATE и REFERENCES.
<Идентификатор возможностей> (<authorization identifier>) определяется для каждой <схемы> (<schema>) и <модуля> (<module>).
<Идентификатор возможностей> (<authorization identifier>), определенный для <схемы> (<schema>), должен различаться от <идентификатора возможностей> (<authorization identifier>) хоть какой иной <схемы> (<schema>) в той же среде. <Идентификатор возможностей> (<authorization identifier>) для <схемы> (<schema>) является «обладателем» всех таблиц и представлений, определенных в данной нам <схеме> (<schema>).
Таблицы и представления обозначаются <именами таблиц> (<table name>). <имя таблицы> (<table name>) состоит из <идентификатора возможностей> (<authorization identifier>) и <идентификатора> (<identifier>). <Идентификатор возможностей> (<authorization identifier>) идентифицирует <схему> (<schema>), в какой были определены таблица либо представле- ние, обозначаемые <именованием таблицы> (<table name>). Таблицы и представления, определенные в разных <схемах> (<schema>), могут иметь однообразные <идентификаторы> (<identifier>).
Если ссылка на <имя таблицы> (<table name>) не содержит очевидно <идентификатор возможностей> (<authorization identifier>), то по дефлоту указывается <идентификатор возможностей> (<authorization identifier>) содержащих <схемы> (<schema>) либо <модуля> (<module>).
<Идентификатор возможностей> (<authorization identifier>) для <схемы> (<schema>) владеет всеми льготами по отношению к таблицам и представлениям, определенным в данной нам <схеме> (<schema>).
<Схема> (<schema>) с данным <идентификатором возможностей> (<authorization identifier>) может содержать <определения льгот> (<privilege definition>), которые передают привилегии остальным <идентификаторам возможностей> (<authorization identifier>). Переданные привилегии могут относиться к таблицам и представлениям, определенным в текущей <схеме> (<schema>), либо могут быть льготами, которые были переданы данному <идентификатору возможностей> (<authorization identifier>) иной <схемой> (<schema>). Раздел WITH GRANT OPTION <определения привилегии> (<privilege definition>) описывает, может ли получатель привилегии передавать ее остальным.
<Модуль> (<module>) специфицирует <идентификатор возможностей> <authorization identifier>, <идентификатор возможностей модуля> (<module authorization identifier>), который должен владеть льготами, достаточными для выполнения всякого <оператора SQL> (<SQL statement>) в <модуле> (<module>).
4.16 Транзакции
Транзакция есть последовательность операций, включающая операции над базой данных, атомарная по отношению к восстановлению и асинхронности. Транзакция начинается, когда вызывается процедура и никакая транзакция в данный момент не активна. Транзакция завершается при выполнении <оператора фиксации> (<commit statement>) либо <оператора отката> (<rollback statement>). Если транзакция заканчивается выполнением <оператора фиксации> (<commit statement>), все конфигурации, внесенные в базу данных данной нам транзакцией делаются доступными для всех асинхронно выполняемых транзакций. Если транзакция заканчивается выполнением <оператора отката> (<rollback statement>), все конфигурации, внесенные в базу данных данной нам транзакцией, аннулируются. Зафиксированные конфигурации не могут быть аннулированы. Конфигурации, внесенные в базу данных транзакцией, могут восприниматься данной нам транзакцией, но до того времени, пока транзакция не закончится выполнением <оператора фиксации> (<commit statement>), они не могут восприниматься иными транзакциями.
Гарантируется сериализуемость выполнения асинхронных транзакций. Сериализуемое выполнение определяется как выполнение операций асинхронно выполняемых транзакций, которое производит то же самое действие, что и некое последовательное выполнение тех же самых транзакций. Последовательное выполнение — это такое выполнение, при котором любая транзакция стопроцентно заканчивается перед началом выполнения последующей транзакции.
Выполнение <оператора SQL> (<SQL statement>) снутри транзакции не оказывает никаких действий на базу данных не считая тех, которые установлены Общими правилами для этого <оператора SQL> (<SQL statement>).
Из этого вместе с гарантированным сериализуемым выполнением транзакций следует воспроизводимость всех операций чтения снутри транзакции, если не учесть последующего:
воздействия конфигураций базы данных и ее содержимого, очевидно производимых самой транзакцией.
воздействия конфигураций значений характеристик, поставляемых процедурам, которые открывают курсоры, на следующие подборки через эти курсоры.
]]>