ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.






                  Справочное руководство по языку SQL        5-10


                        ARCHIVELOG      соответственно разрешает    и
                        NOARCHIVELOG    запрещает архивирование.

                        MOUNT           определяет, на  что  изменить
                        DISMOUNT        статус базы данных:  монтиро-
                                        вать или  размонтировать. Для
                                        большинства   видов  действий
                                        база данных должна быть  мон-
                                        тирована и открыта. Некоторые
                                        операции по сопровождению ба-
                                        зы  требуют,  чтобы  она была
                                        монтированной,  но не  откры-
                                        той.
                                        Детально фраза MOUNT описыва-
                                        ется в      "ORACLE     RDBMS
                                        Руководстве    администратора
                                        базы данных".
                        OPEN            указывает, что   база  данных
                        CLOSE           должна быть открыта и доступ-
                                        на  для нормального к ней об-
                                        ращения или закрыта и  недос-
                                        тупна.
                                        За полным   описанием   фразы
                                        OPEN обратитесь  к  документу
                                        "ORACLE RDBMS Руководство ад-
                                        министратора базы данных".

         Замечания по   Приемлемость опций зависит от текущего состо-
         использованию  яния базы данных:

                если база данных:            Вы можете использовать:

               не монтирована                 только MOUNT
               монтирована, но не открыта     все, кроме MOUNT и CLOSE
               открыта                        только CLOSE

         SIZE и REUSE   Если специфицировано SIZE, а REUSE - опущено,
                        будет  создаваться  файл  указанного  размера
                        (его не должно быть на диске).  Если  указаны
                        оба параметра, то в случае отсутствия файла -
                        он создается, а при наличии - проверяется его
                        размер. Если указано только REUSE или не ука-
                        зано ничего, файл должен существовать и оста-
                        ваться такого же размера.

                        Некоторые аргументы   требуют  дополнительные
                        действия со стороны DBA, например - распреде-
                        ление и подготовка файлов для опции REUSE или
                        выполнение backup,  если  используется  режим
                        ARCHIVELOG.
                        В общем случае рекомендуется перед изменением
                        базы закрыть ее и размонтировать. За дополни-
                        тельной   информацией   об   операторе  ALTER
                        DATABASE обратитесь к "ORACLE RDBMS Руководс-


                                    -- 91 --



                        тву администратора базы данных".
                        
                      Справочник по SQL - операторам         5-11


         Примеры        Чтобы монтировать базу в исключительном режиме:

                        ALTER DATABASE dbname MOUNT EXCLUSIVE

                        Чтобы открыть уже монтированную базу данных:

                        ALTER DATABASE OPEN

                        Для переключения в режим архивирования файлов
                        журнала:

                        ALTER DATABASE ARCHIVELOG

                 Для добавления файла журнала:

                        ALTER DATABASE
                            ADD LOGFILE dblog3.log SIZE 50000


         Связанные      Оператор CREATE  DATABASE;  команды  SQL*DBA:
         темы           STARTUP и SHUTDOWN (В Приложении В  к "ORACLE
                        RDBMS Руководство администратора базы данных")

                        
                  Справочное руководство по языку SQL        5-12





























                                    -- 92 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                          F

E         ALTER INDEX                                         F


         Назначение     Изменение будущих характеристик распределения
                        памяти для блоков индекса.

         Предпосылки    Вы должны быть  либо владельцем индекса,  либо
                        иметь привилегию DBA.

         Синтаксис      ALTER INDEX [user.]index
                            [INITRANS integer] [MAXTRANS integer]
                            [STORAGE storage]

         Ключевые слова user            имя пользователя владельца индекса
         и параметры
                        index           имя индекса

                        INITRANS integer (Обратитесь к ниже к параметру
                                         INITRANS в описании оператора
                                          CREATE TABLE).
                        MAXTRANS integer (Обратитесь к ниже к параметру
                                         MAXTRANS в описании оператора
                                          CREATE TABLE).
                        STORAGE storage   (См.  ниже  описание  фразы
                                          STORAGE).

         Замечания по   Параметры INITRANS, MAXTRANS и STORAGE имеют
         использованию  то же значение, что и в операторе CREATE TABLE

         Пример         Для того,  чтобы  изменить  индекс   CUSTOMER
                        пользователя SCOTT таким образом, что будущие
                        блоки ORACLE в этом индексе использовали  на-
                        чально 5  элементов транзакций и дополнитель-
                        ный экстент был размером 100 Килобайтов, вве-
                        дите:

                        ALTER INDEX SCOTT.CUSTOMER
                            INITRANS 5
                            STORAGE (NEXT 100K)

         Связанные      Операторы CREATE INDEX и CREATE TABLE; фраза
         темы           STORAGE.
               
                      Справочник по SQL - операторам         5-13












                                    -- 93 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                        F

E         ALTER ROLLBACK SEGMENT                             F


         Назначение     Изменить параметры памяти существующего  сег-
                        мента отката.

         Предпосылки    Требуется привилегия DBA.

         Синтаксис      ALTER [PUBLIC] ROLLBACK SEGMENT rollback_segment
                            STORAGE storage

         Ключевые слова
         и параметры
                        PUBLIC          Говорит что существующий сег-
                                        мент отката - общий.

                        rollback_segment Специфицирует имя существую-
                                        щего сегмента отката.

                        STORAGE storage. См. описание синтаксиса фра-
                                         зы STORAGE далее в этой главе.

         Замечания по   В  операторе  ALTER  ROLLBACK  SEGMENT фраза
         использованию  STORAGE влияет лишь на  будущее распределение
                        памяти в указанном сегменте отката.  Следова-
                        тельно аргументы INITIAL и MINEXTENTS для из-
                        менения  существующего сегмента отката приме-
                        нять нельзя.

                        Имейте в  виду,  что  оператор ALTER ROLLBACK
                        SEGMENT нельзя для смены статуса сегмента от-
                        ката с PUBLIC на private и наоборот. Для про-
                        изведения таких изменений необходимо отменить
                        сегмент и создать заново с нужной характерис-
                        тикой.

         Примеры        Чтобы изменить параметры памяти сегмента RSONE:

                        ALTER ROLLBACK SEGMENT RSONE
                        STORAGE (NEXT 1000 MAXEXTENTS 20
                                 PCTINCREASE 0)

         Связанные      Операторы CREATE DATABASE, CREATE ROLLBACK
         темы           SEGMENT, CREATE TABLESPACE; фраза STORAGE.
                 
                  Справочное руководство по языку SQL        5-14










                                    -- 94 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                     F

E         ALTER SEQUENCE                                F


         Назначение     Изменить опции последовательности в  одном из
                        следующих направлений:

                        * изменить  на  будущее  шаг  между соседними
                          последовательными номерами.
                        * установить MINVALUE или MAXVALUE или выклю-
                          чить один или оба этих параметра.
                        * включить/выключить действие параметра CACHE
                        * включить/выключить действие параметра ORDER

         Предпосылки    Вы должны быть владельцем последовательности,
                        иметь предоставленные  к  ней  привилегии или
                        иметь привилегию DBA.

         Синтаксис      ALTER SEQUENCE [user.]sequence
                            [INCREMRNT BY integer]
                            [MAXVALUE integer | NOMAXVALUE]
                            [MINVALUE integer | NOMINVALUE]
                            [CYCLE | NOCYCLE]
                            [CACHE integer | NOCACHE]
                            [ORDER | NOORDER]

         Ключевые слова user            имя пользователя для владельца
         и параметры                    последовательности.
                        sequence        имя существующей последователь-
                                        ности.
                        INCREMENT BY    Специфицирует  инкремент  для
                        integer         будущей последовательности.
                        MAXVALUE |      Специфицирует   новый  макси-
                        NOMAXVALUE      мальный последовательный  но-
                                        мер или  делает его неограни-
                                        ченным.
                        MINVALUE |      Специфицирует   новый  мини -
                        NOMINVALUE      мальный последовательный  но-
                                        мер или  делает его неограни-
                                        ченным.
                        CYCLE |         Определяет   переключение  на
                        NOCYCLE         номер MINVALUE,  когда в воз-
                                        растающей последовательности
                                        достигается MAXVALUE;  и  пе-
                                        реключение на   MAXVALUE  для
                                        убывающей последовательности.
                        CACHE integer | Определяет, будут ли хранить-
                        NOCHACE         ся в памяти будущие  последо-
                                        вательные номера (для ускоре-
                                        ния  доступа). Предполагается
                                        20. CACHE  должен быть меньше
                                        разницы между   MAXVALUE    и
                                        MINVALUE.
                        ORDER |         Cпецифицирует, будет ли ORACLE
                        NOORDER         или - нет генерировать после-
                                        довательные номера  в порядке

                                    -- 95 --



                                        запроса. Обычно,  такая гене-
                                        рация производится без  ука-
                                        зания ORDER.
                   
                      Справочник по SQL - операторам         5-15


         Замечания по   Для  того,  чтобы начать последовательность с
         использованию  другого номера,  ее надо отменить  и  создать
                        заново. Оператор ALTER SEQUENCE влияет только
                        на будущие последовательные номера.

                        Выполняются некоторые  проверки  правильности
                        задания оператора. Например - невозможно наз-
                        начить новое MAXVALUE,  если оно меньше теку-
                        щего последовательного номера.

         Примеры        Для установки нового максимального значения по-
                        следовательности ESEQ, введите:

                        ALTER SEQUENCE ESEQ MAXVALUE 1500

                        Для включения CYCLE и CACHE наберите:

                        ALTER SEQUENCE ESEQ CYCLE CACHE 5

         Связанные      Операторы CREATE SEQUENCE и DROP SEQUENCE.
         темы
                        
                  Справочное руководство по языку SQL        5-16





























                                    -- 96 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                     F

E         ALTER SESSION                                 F


         Назначение     Включает или   отключает   в  текущем  сеансе
                        средство трассировки SQL.

         Предпосылки    Нет.

         Синтаксис      ALTER SESSION
                            SET SQL_TRACE {TRUE | FALSE}

         Ключевые слова TRUE       включает средство трассировки SQL
         и параметры    FALSE      отключает средство трассировки SQL

         Замечания по   Средство трассировки SQL генерирует статисти-
         использованию  ку производительности  обработки SQL - опера-
                        торов. Для включения средства трассировки SQL
                        - операторов в Вашем сеансе выполните команду
                        ALTER SESSION с  ключевым  словом  TRUE.  Для
                        выключения средства трассировки выполните ко-
                        манду ALTER SESSION с ключевым словом FALSE.

                        Можно также активизировать  средство  трасси-
                        ровки SQL для всех сеансов данного экземпляра
                        ORACLE, установив в TRUE параметр файла INIT.
                        ORA: SQL_TRACE.  В этом случае Вы можете вык-
                        лючить трассировку отдельного сеанса, выдав в
                        нем команду  ALTER  SESSION с ключевым словом
                        FALSE.

                        Не выдавайте команду ALTER SESSION в  тригге-
                        рах SQL*Forms.  Для информации об активации и
                        деактивации средства трассировки SQL  обрати-
                        тесь к  Главе  23 - "Компоненты" и Главе 26 -
                        "Опции" документа "Справочник разработчика по
                        SQL*Forms".

                        Более подробная информация о средстве трасси-
                        ровки SQL (включая форматирование и интерпре-
                        тацию результатов) дается в Главе 7 - "Средс-
                        тва диагностики производительности" документа
                        "ORACLE RDBMS Руководство по настройке произ-
                        водительности".

         Примеры        Для активации средства трассировки SQL в  Ва-
                        шем сеансе выполните оператор:

                        ALTER SESSION SET SQL_TRACE TRUE

                        Для деактивации средства, выполните следующую
                        команду:

                        ALTER SESSION SET SQL_TRACE FALSE



                                    -- 97 --



         Связанные      Глава 7 -  "Средства  диагностики  производи-
         темы           тельности"  документа "ORACLE RDBMS Руководс-
                        тво по настройке производительности".

                      Справочник по SQL - операторам         5-17


E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                       F

E         ALTER TABLE                                     F


         Назначение     Меняет определение таблицы:

                        * добавляя столбцы или ограничения
                        * модифицируя определения существующих столб-
                          цов (например - тип данных или NOT NULL).
                        * отменяя ограничения
                        * модифицируя будущее распределение памяти
                        * отмечая,  что для данной таблицы был выпол-
                          нен backup

         Предпосылки    Вы должны быть владельцем  таблицы,  получить
                        на нее  привилегию ALTER или иметь привилегию
                        DBA.

         Синтаксис      ALTER TABLE [user.]table
                         [ADD ({column_element|table_constraint}
                              [,{column_element|table_constraint}]...)]
                         [MODIFY (column_element [,column_element]...)]
                         [DROP CONSTRAINT constraint]...
                         [PCTFREE integer] [PCTUSED integer]
                         [INITRANS integer] [MAXTRANS integer]
                         [STORAGE storage]
                         [BACKUP]

         Ключевые слова [user.]table    имя существующего пользовате-
         и параметры                    ля для  таблицы,  которую  Вы
                                        хотите изменить. По умолчанию
                                        в качестве user предполагает-
                                        ся пользователь, выдавший ко-
                                        манду ALTER TABLE.  Для изме-
                                        нения характеристик  не своей
                                        таблицы, Вы должны либо иметь
                                        для нее привилегию ALTER, ли-
                                        бо иметь привилегию DBA.
                        ADD/MODIFY      добавляет или    модифицирует
                        column_element  определение столбца,  ограни-
                                        чение столбца или его умолча-
                                        ние. Синтаксис column_element
                                        приводится ниже в этой главе.
                        ADD             Добавляет ограничение     для
                       table_constraint таблицы. См. ниже в этой гла-
                                        ве описание "Constraint"
                        DROP constraint отменяет указанное  ограниче-
                                        ние для столбца или таблицы.
                        PCTFREE integer  (Смотрите описание этих па-
                        PCTUSED integer  раметров ниже в операторе

                                    -- 98 --



                        INITRANS integer CREATE TABLE)
                        MAXTRANS integer
                        STORAGE storage (См. ниже фразу Storage).
                        BACKUP          модифицирует  словарь данных,
                                        отмечая что таблица была ско-
                                        пирована на момент выдачи ко-
                                        манды ALTER TABLE.
                       
                  Справочное руководство по языку SQL        5-18


         Замечания по   Если Вы добавляете к таблице  столбец  с  по-
         использованию  мощью фразы  ADD,  его начальное значение для
                        каждой строки - NULL.  Добавлять столбец  NOT
                        NULL можно  только  в  пустую  (не содержащую
                        строк) таблицу.
                        Фраза MODIFY  используется для изменения сле-
                        дующих атрибутов столбца:

                            * размеров
                            * типа данных
                            * NOT NULL

                        Изменять тип данных и уменьшать размер столб-
                        ца можно  лишь  для  содержащих  NULL во всех
                        строках. Изменить тип на NUT NULL можно толь-
                        ко если все строки содержат значение не null.
                        Если Вы меняете размер столбца,  имевшего ат-
                        рибут NOT  NULL  и  не указываете "NOT NULL",
                        столбец все равно сохраняет этот атрибут.

                        Замечание. Обзор,  определенный  запросом  по
                        всем столбцам таблицы (SELECT * FROM ...), не
                        будет больше правильно работать,  если Вы до-
                        бавили к соответствующей таблице новые столб-
                        цы. Это можно обойти  удалением  и  повторным
                        созданием обзора.

         Примеры        Чтобы добавить к таблице EMP числовой столбец
                        THRIFTPLAN с  максимальным  размером  в  семь
                        цифр  и двумя позициями после точки,  а также
                        однобайтового столбца LOANCODE, введите:

                        ALTER TABLE EMP
                          ADD (THRIFTPLAN NUMBER(7,2), LOANCODE CHAR(1))

                        Для увеличения размера THRIFTPLAN до 9 цифр и
                        отмены ограничения ENAME_CNSTR введите:

                        ALTER TABLE EMP
                          MODIFY (THRIFTPLAN NUMBER(9,2))
                          DROP CONSTRAINT ENAME_CNSTR

         Связанные      Оператор CREATE TABLE; фраза Constraint.
         темы
                        
                      Справочник по SQL - операторам         5-19


                                    -- 99 --



E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                     F

         ALTER TABLESPACE
E                                                       F

    Назначение   Изменить существующее табличное пространство путем:

                 * добавления или переименования файла(ов) базы данных
                 * изменения умалчиваемых параметров памяти для таблиц
                 * перевода его в online или offline
                 * старта или остановки backup.

    Предпосылки  Требуется привилегия DBA

    Синтаксис    ALTER TABLESPACE tablespace
                 {ADD DATAFILE filespec [,filespec [REUSE] ] ...
                 |RENAME DATAFILE 'filename' [,'filename'] ...
                      TO 'filename' [,'filename']...
                 |DEFAULT STORAGE storage]
                 |ONLINE
                 | OFFLINE [ NORMAL | IMMEDIATE ]
                 | {BEGIN BACKUP | END BACKUP}}

         Ключевые слова
         и параметры
                 tablespace       имя существующего табличного прост-
                                  ранства

                 ADD DATAFILE     делает доступной табличному  прост-
                 filespec         ранству дополнительную память.  До-
                                  бавить файл к табличному пространс-
                                  тву  можно  когда  оно  находится в
                                  состоянии   online   или   offline.
                                  Filespec спецификация базы данных в
                                  форме:
                            'filename' [SIZE integer [K|M]][REUSE]
                                  integer указывает  SIZE  в  байтах.
                                  Если integer опущено, предполагает-
                                  ся размер файла журнала в 500К. Ес-
                                  ли далее идет "К",  integer умножа-
                                  ется  на  1024,  если  "М"   -   на
                                  1048576.  Если SIZE указан, а REUSE
                                  - опущен,  будет  создаваться  файл
                                  специфицированного размера (до это-
                                  го он не должен существовать). Если
                                  указаны параметра,  файл создается,
                                  если его нет,  а если есть - прове-
                                  ряется его размер.  Если REUSE опу-
                                  щено или не указаны  оба аргумента,
                                  файл  должен  существовать  и оста-
                                  ваться такого же размера.

                 RENAME           переименовывает один  или несколько
                DATAFILE filename файлов,   связанных   с   табличным
                TO filename       пространством.  Файл   операционной
                                  системы  не  переименовывается.  Во
                                  время   этой   операции   табличное
                                  пространство  должно  находиться  в

                                   -- 100 --



                                  offline.
                 DEFAULT         специфицирует новые умалчиваемые па-
                 STORAGE storage раметры памяти для будущих объектов,
                                 создаваемых в табличном пространстве
                                 См.   описание   синтаксиса    фразы
                                 STORAGE
    
                  Справочное руководство по языку SQL        5-20


                 ONLINE          указывает, что  табличное пространс-
                                 тво должно быть возвращено в состоя-
                                 ние online.
                 OFFLINE         указывает, что  табличное пространс-
                                 тво должно быть выведено  в  offline
                                 либо  немедленно  (IMMEDIATE),  либо
                                 после того, как текущие пользователи
                                 больше    к   нему   не   обращаются
                                 (NORMAL).
                 BEGIN BACKUP    специфицирует,  что файлы базы, сос-
                                 тавляющие  это  пространство,  будут
                                 скопированы   системной   процедурой
                                 backup.  Этот  оператор не влияет на
                                 доступ к базе  данных;  пользователи
                                 могут  продолжать  к ней обращаться.
                                 Этот оператор для работы потребуются
                                 также управляющий файл и файл журна-
                                 ла.
                 END BACKUP      указывает  на  завершение  процедуры
                                 системного копирования.

    Замечания по Для переименования  файла(ов)  необходимо  выполнить
    использова-  следующие шаги:
    нию
                 1. Перевести табличное пространство в offline.
                 2. Переименовать файлы на уровне операционной системы
                 3. Переименовать файлы с помощью оператора ALTER
                    TABLESPACE.
                 4. Вернуть табличное пространство в online.

    Примеры      Чтобы сигнализировать базе данных о начале  операции
                 копирования, введите:

                 ALTER TABLESPACE ACCOUNTING BEGIN BACKUP

                 Чтобы сигнализировать, что backup завершился, введите:

                 ALTER TABLESPACE ACCOUNTING END BACKUP

                 Заметьте, что выполнять backup можно и  при активном
                 табличном  пространстве.  Просто  offline  backup не
                 требует от Вас архивирования файлов журнала  повтор-
                 ного выполнения.

    Связанные    Операторы CREATE TABLESPACE, CREATE DATABASE, DROP
    темы         TABLESPACE; фраза STORAGE.
    
                      Справочник по SQL - операторам         5-21

                                   -- 101 --




E  ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                            F

E    ALTER USER                                           F

    Назначение   изменять следующие  характеристики существующих поль-
                 зователей базы данных:

                 * пароль
                 * умалчиваемое табличное пространство для создания
                   объектов
                 * умалчиваемое временное табличное пространство для
                   временных сегментов, создаваемых в интересах поль-
                   зователя.

    Предпосылки  Требуется привилегия DBA

    Синтаксис    ALTER USER username [IDENTIFIED BY password]
                 [DEFAULT TABLESPACE tablespace]
                 [TEMPORARY TABLESPACE tablespace]

    Ключевые слова
    и параметры
                 username         имя существующего в настоящий момент
                                  пользователя базы данных.
                 password         новый пароль для данного пользователя

                 DEFAULT          специфицирует умалчиваемое табличное
                 TABLESPACE       пространство для создания объектов.

                 TEMPORARY        специфицирует умалчиваемое табличное
                 TABLESPACE       пространство для создания временных
                                  сегментов.

    Замечания по Пароль пользователя может быть изменен также и с по-
    использова-  мощью  оператора GRANT.  Умалчиваемое временное таб-
    нию          личное пространство для пользователя может быть  ус-
                 тановлено    также   при   назначении   пользователю
                 привилегии RESOURCE для табличного  пространства  (и
                 если  это  первое  табличное  пространство в котором
                 предоставляется такая привилегия). Умалчиваемое вре-
                 менное  табличное пространство устанавливается также
                 при предоставлении пользователю  первого  табличного
                 пространства.

    Пример       Для изменения  у пользователя SCOTT пароля на LION и
                 назначения в   качестве   умалчиваемого -  табличное
                 пространство TSTEST, введите:

                 ALTER USER SCOTT
                 IDENTIFIED BY LION
                 DEFAULT TABLESPACE TSTEST

    Связанные    Операторы CREATE TABLESPACE и GRANT.
    темы
    
                  Справочное руководство по языку SQL        5-22


                                   -- 102 --




E    ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                        F
                                                           E
    AUDIT (Форма I)                                                F


    Назначение   Выбор опций регистрации доступа к базе данных.

    Предпосылки  Требуется привилегия DBA

    Синтаксис    AUDIT {system_option [,system_option]... | ALL]
                 WHENEVER [NOT] SUCCSESSFUL]

    Ключевые слова system_option  одна из опций: DBA, CONNECT, NOT
    и параметры                   EXISTS или RESOURCE.

                 ALL              эквивалентен списку всех перечис-
                                  ленных опций. По умолчанию опера-
                                  торы регистрируются независимо от
                                  того, успешно или нет они заверши-
                                  лись.

                 WHENEVER         указывает, что SQL - операторы бу-
                 SUCCSESSFUL      дут регистрироваться только при их
                                  успешном завершении.

                 WHENEVER NOT     указывает, что SQL - операторы бу-
                 SUCCSESSFUL      дут регистрироваться только при их
                                  аварийном завершении.

    Замечания по Эта форма регистрации доступа дает  возможность  DBA
    использова-  отслеживать следующие действия:
    нию
                 * подключение и отключение пользователей к базе дан-
                   ных (опция CONNECT)
                 * операторы, требующие привилегии RESOURCE, например
                   такие, которые создают объекты базы данных
                 * операторы, требующие привилегии DBA (опция SBA)
                 * операторы, завершившиеся с ошибкой ORACLE, так как
                 указанные  объекты  базы данных не существуют (опция
                 NOT EXIST).

                 Регистрация доступа  на  уровне системы включается с
                 помощью параметра AUDIT_TRAIL файла INIT.ORA.  Неза-
                 висимо от того,  включена регистрация или нет, SQL -
                 оператор AUDIT будет выполняться правильно. Если ре-
                 гистрация задействована,  в  журнал будут заноситься
                 записи, в противном случае - нет.
                 Все формы регистрации помещают результаты  в таблицы
                 словаря данных.  В  результате этого Вы можете легко
                 генерировать отчеты на основании этих  данных.  Если
                 таблицы регистрации  словаря данных разрастаются, Вы
                 можете архивировать старые записи регистрации досту-
                 па и  удалить их из таблиц.  Удалять таблицы словаря
                 данных Вы не должны.
               
                      Справочник по SQL - операторам         5-23


                                   -- 103 --




                 Заметьте, что  для  операторов DDL и DML термин "за-
                 вершение" означает завершение "фазы  разбора"  (ана-
                 лиз,  просмотр словаря,  проверка защиты) безотноси-
                 тельно их выполнения (execution). Обратите внимание,
                 что  операция  rollback не удаляет строки из журнала
                 регистрации доступа.

                 Если не   определено  ни  WHENEVER  SUCCSESSFUL,  ни
                 WHENEVER NOT SUCCSESSFUL,  SQL - операторы регистри-
                 руются независимо от их завершения.


    Примеры      Для регистрации успешных запросов ресурсов введите:

                 AUDIT RESOURCE WHENEVER SUCCSESSFUL

                 Для регистрации безуспешных попыток доступа к базе
                 данных введите:

                 AUDIT CONNECT  WHENEVER NOT SUCCSESSFUL

    Связанные    Операторы AUDIT Формы II и NOAUDIT.
    темы
                                             
                  Справочное руководство по языку SQL        5-24

































                                   -- 104 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         AUDIT (Форма II)                              F


    Назначение   Включать регистрацию доступа к таким  объектам  базы
                 данных, как таблицы и обзоры.

    Предпосылки  Для регистрации объектов Вы должны быть либо их вла-
                 дельцем, либо иметь привилегии  DBA.  Опция  DEFAULT
                 требует привилегий DBA.

    Синтаксис    AUDIT {table_option [,table_option]... | ALL}
                 ON { [user.]table | DEFAULT}
                 [BY {SESSION | ACCESS}]
                      ------
                 [WHENEVER [NOT] SUCCSESSFUL]

    Ключевые слова
    и параметры
                 table_option     Для таблиц приемлемы следующие опции
                                  AUDIT,COMMENT,DELETE,GRANT,INDEX,
                                  INSERT,LOCK,RENAME,SELECT,UPDATE.
                                  Для обзоров приемлемы следующие опции
                                  AUDIT,COMMENT,INSERT,DELETE,GRANT,
                                  LOCK,RENAME,SELECT,UPDATE.
                                  Для последовательностей приемлемы
                                  опции ALTER,AUDIT,GRANT,SELECT.
                                  Для синонимов приемлемы те  же  оп-
                                  ции, что и для таблиц (так как все
                                  действия реально производятся с таб-
                                  лицами).
                 ALL              может применяться для обозначения
                                  всех приемлемых опций.
                 username         имя владельца таблицы
                 table            имя таблицы, обзора ,  последова-
                                  тельности или синоним, означающий
                                  обзор или таблицу.
                 DEFAULT          специфицирует, что созданные впо-
                                  следствии таблицы будут регистриро-
                                  ваться, как указано в table_option
                                  (устанавливает общесистемные опции
                                  регистрации доступа).
                 BY SESSION       указывает, что за сеанс будет соз-
                                  дано только по одной записи для
                                  каждого типа регистрируемого доступа
                 BY ACCESS        запись будет создаваться для каждой
                                  попытки доступа каждого типа.

    
                      Справочник по SQL - операторам         5-25







                                   -- 105 --




    Замечания по Фраза BY  определяет степень детализации регистраци-
    использова-  онного контроля доступа,  указывая как  часто  будут
    нию          записываться новые   элементы   в   AUDIT_TRAIL.  BY
                 SESSION говорит о том,  что определенный тип доступа
                 применялся к объекту базы данных.  BY ACCESS опреде-
                 ляет, что регистрация будет выполняться  так  часто,
                 как часто осуществляется тот или иной вид доступа.

                 Некоторые события случаются гораздо более часто, чем
                 другие (например - обычно DML - операторы выполняют-
                 ся более часто,  нежели GRANT).  Чем более детальная
                 регистрация, тем большее количество записей генери-
                 руется, так  что  Вы должны проанализировать,  какие
                 операторы надо регистрировать.

                 В режиме BY SESSION для каждой  таблицы генерируется
                 не более одной записи для всего сеанса пользователя.
                 Выбранные SQL - операторы записываются не добавлени-
                 ем, а изменением записей в таблице AUDIT_TRAIL.  Ко-
                 личество таких обновлений записи  зависит  от  числа
                 успешных или неудачных попыток выполнения операторов
                 определенного типа. Отсутствие фразы BY ... означает
                 по умолчанию BY SESSION.

                 В режиме  BY  ACCESS  регистрируемые SQL - операторы
                 отмечаются в  AUDIT_TRAIL   добавлением   (вставкой
                 строк). Для  операций DML строки добавляются или об-
                 новляются после завершения "фазы разбора" оператора.

    Пример       Для регистрации всех сеансов,  в которых были безус-
                 пешные попытки доступа к таблице EMP, введите:

                 AUDIT ALL ON EMP WHENEVER NOT SUCCSESSFUL

                 Для регистрации  каждой  попытки  вставки строк и их
                 модификации в той же таблице, введите:

                 AUDIT INSERT, UPDATE ON EMP BY ACCESS

    Связанные    Операторы AUDIT Формы I и NOAUDIT.
    темы

















                                   -- 106 --



                  Справочное руководство по языку SQL        5-26


E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                     F

E         CLOSE cursor (Встроенный SQL)                 F


         Назначение Освобождает  ресурсы,  распределенные  оператором
                    OPEN cursor.

        Предпосылки Должен именовать ранее открытый курсор.

        Синтаксис   EXEC SQL CLOSE cursor_name

        Ключевые    cursor_name      ранее открытый курсор.
        слова и
        параметры

        Замечания   Попытка закрыть не  открытый  курсор  приведет  к
        по исполь-  ошибке. Нет необходимости закрывать курсор, чтобы
        зованию     вновь открыть его. Из закрытого курсора строки не
                    могут быть выбраны.

                    Закрытие курсора освобождает ранее открытый неяв-
                    ный курсор; освобождение, однако, не выполняется,
                    пока память,  связанная с курсором, нужна другому
                    неявному курсору. Такое освобождение автоматичес-
                    ки выполняет ORACLE.

                    Опции прекомпилятора HOLD_CURSOR и RELEASE_CURSOR
                    влияют на действие оператора  CLOSE  cursor.  Для
                    информации об этих опциях обратитесь к "Руководс-
                    тву программиста по прекомпиляторам ORACLE".

         Пример     Следующий пример показывает  типичную  последова-
                    тельность использования   курсоров.   Вы  должны
                    описать курсор,  открыть его,  выбрать строки  и,
                    наконец, закрыть его.

                    EXEC SQL DECLARE c CURSOR
                        FOR SELECT ename, empno, job, sal
                               FROM emp
                               WHERE deptno=:deptno;

                    EXEC SQL OPEN c;

                    example: loop
                       EXEC SQL FETCH c INTO :ename, :empno, :job,
                                             :sal:sal_ind;
                       if sqlca.sqlcode = oracle.error.not_found then
                          exit sample;
                       end if;
                    end loop example;

                    EXEC SQL CLOSE c;



                                   -- 107 --



         Связанные  Операторы PREPARE, DECLARE CURSOR, OPEN cursor.
         темы
                    
                      Справочник по SQL - операторам         5-27


E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         Ограничение для столбца                       F

         См. ниже раздел "Фраза CONSTRAINT".


E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         Элемент описания для столбца                  F


         Назначение Определение столбца и связанных с ним ограничений.

        Предпосылки Нет.

        Синтаксис   column datatype [DEFAULT expr] [column constraint]

        Ключевые    column           имя вводимого столбца, подчиняю-
        слова и                      щееся соглашениям  по именованию
        параметры                    объектов базы данных.

                    datatype         правильный тип данных (определя-
                                     ются в Главе 3 - "Элементы языка
                                     SQL" данного руководства.

                    DEFAULT expr     Необязательная фраза DEFAULT оп-
                                     ределяет  выражение, назначаемое
                                     столбцу, если оно явно не указы-
                                     вается при  добавлении  строки в
                                     таблицу. Действительно любое вы-
                                     ражение, исключая ссылающиеся на
                                     столбец, LEVEL, ROWNUM. Тип дан-
                                     ных выражения  должен  соответс-
                                     твовать типу  столбца. Синтаксис
                                     expr определяется в Главе 4 -
                                     "Операции и функции" данного ру-
                                     ководства.

                    column constraint  (См.   ниже   раздел   "Фраза
                                     CONSTRAINT").

         Замечания  ORACLE Version 6.0 поддерживает  синтаксис  фразы
         по исполь- DEFAULT; семантическая поддержка будет обеспечена
         зованию    в будущих версиях.

                    Элементы описания столбца используются в операто-
                    рах CREATE  TABLE  и  ALTER TABLE для определения
                    столбцов таблиц.

         Примеры    Для определения столбца  EMPNO  с  типом  NUMBER,
                    размером 5 цифр и NOT NULL, введите:

                                   -- 108 --



                    CREATE TABLE EMP (EMPNO NUMBER(5) NOT NULL, ...)

                    Чтобы создать столбец DEPTNO с типом NUMBER, раз-
                    мером 5 цифр  и  подразумеваемым  значением  100,
                    введите:

                    CREATE TABLE EMP (..., DEPTNO NUMBER(5) DEFAULT 100)

         Связанные  Фраза CONSTRAINT; оператор CREATE TABLE.
         темы

















































                                   -- 109 --



                  Справочное руководство по языку SQL        5-28


E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         COMMENT                                       F

         Назначение Записывать в словарь данных комментарии,  относя-
                    щиеся к таблице.

        Предпосылки Для записи комментария о таблице или  столбце  Вы
                    должны быть владельцем таблицы или иметь привиле-
                    гию DBA или иметь  привилегию  ALTER  для  данной
                    таблицы.

         Синтаксис  COMMENT ON { TABLE [user.]table
                               | COLUMN [user.]table.column }
                        IS 'text'

         Ключевые   user             владелец таблицы.
         слова и
         параметры  TABLE table      специфицирует имя комментируемой
                                     таблицы или обзора.

                    COLUMN column    специфицирует имя комментируемо-
                                     го столбца.

                    text             заключенный в  одиночные кавычки
                                     текст длиной  до  255  символов.
                                     См. описание  text  в  Главе 3 -
                                     "Элементы языка SQL" данного ру-
                                     ководства.

         Замечания  Удалить комментарий  из  базы данных можно просто
         по исполь- задав в качестве комментария  пустую  строку  ''.
         зованию    Чтобы посмотреть комментарий, запросите его в од-
                    ном из обзоров словаря  данных: ALL_COL_COMMENTS,
                    ALL_TAB_COMMENTS, USER_COL_COMMENTS или USER_TAB_
                    COMMENTS.

         Примеры    Для занесения комментария для столбца NOTES  таб-
                    лицы SHIPPING, можно ввести:

                    COMMENT ON COLUMN SHIPPING.NOTES
                      IS 'Special packing or shipping instructions'

                    Для удаления этого комментария необходимо ввести:

                    COMMENT ON COLUMN SHIPPING.NOTES IS ''

         Связанные  /**/(Комментарий SQL).
         темы
                                          
                      Справочник по SQL - операторам         5-29





                                   -- 110 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         COMMIT                                        F


         Назначение Оператор COMMIT применяется для того, чтобы:

                      * сделать "постоянными" все изменения,  сделан-
                      ные в текущей транзакции (реально  данные могут
                      быть изменены несколько позже)

                      * очистить все точки сохранения данной транзак-
                      ции

                      * завершить транзакцию

                      * освободить все блокировки данной транзакции

        Предпосылки Нет.

        Синтаксис   COMMIT [WORK]

         Ключевые   WORK             необязателен и обеспечивает ANSI
         слова и                     - совместимость. Операторы COMMIT
         параметры                   и COMMIT WORK - идентичны.

         Замечания  Рекомендуется явно завершать транзакции  в  прик-
         по исполь- ладных программах (включая и последнюю транзакцию
         зованию    перед отсоединением от ORACLE)  используя команды
                    COMMIT WORK (или ROLLBACK WORK).  Если Вы явно не
                    записали транзакцию,  а прикладная программа  за-
                    вершилась аварийно,  последняя не записанная тран-
                    закция будет откачена.

                    Нормальный выход из большинства утилит и  инстру-
                    ментальных средств    ORACLE   будет   записывать
                    текущую транзакцию. Нормальный выход из программы
                    прекомпилятора ORACLE  приводит  к откату текущей
                    транзакции. См. ниже раздел об операции COMMIT во
                    встроенном SQL.

                    Транзакция (или  логическая единица работы) - это
                    последовательность SQL  -   операторов,   которую
                    ORACLE трактует  как  единый элемент.  Транзакция
                    начинается с первого выполнимого SQL  - оператора
                    после COMMIT,  ROLLBACK  или присоединения к базе
                    данных. Транзакция   завершается   по    командам
                    COMMIT, ROLLBACK  или при отсоединении от ORACLE.
                    Заметьте, что  система  ORACLE   выдает   неявный
                    COMMIT до  и после выполнения любого DDL - опера-
                    тора. За полным описанием транзакций  и обработки
                    транзакций обратитесь  к  Главе  11 - "Управление
                    транзакциями" документа "ORACLE RDBMS Руководство
                    администратора базы данных".




                                   -- 111 --



                    Операторы COMMIT  и  ROLLBACK завершают также и 
                    транзакцию типа "READ ONLY", начинающуюся операто-
                    ром SET TRANSACTION.
                    
                  Справочное руководство по языку SQL        5-30


         Пример     Для добавления строки к таблице DEPT и записи из-
                    менения введите следующие команды:

                    INSERT INTO DEPT VALUES ('50','MARKETING','TAMPA')
                    COMMIT WORK

         Связанные  Операторы ROLLBACK, SAVEPOINT, SET TRANSACTION.
         темы












































                                   -- 112 --



                      Справочник по SQL - операторам         5-31


E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         COMMIT (Встроенный SQL)                       F


         Назначение Сделать постоянными все изменения,  выполненные в
                    данной транзакции. Опция RELEASE используется для
                    освобождения всех ресурсов и отсоединения от базы
                    данных.

        Предпосылки Нет.

        Синтаксис   EXEC SQL [AT dbname] COMMIT [WORK] [RELEASE]

         Ключевые   AT dbname        необязательная фраза,  указываю-
         слова и                     щая имя базы данных, для которой
         параметры                   выдан COMMIT.  За дополнительной
                                     информацией о  фразе  AT обрати-
                                     тесь к    описанию     оператора
                                     DECLARE DATABASE.

                    RELEASE          необязательный параметр,  отсое-
                                     диняющий Вас от базы данных.

         Замечания  Всегда завершайте явно последнюю единицу работы с
         по исполь- помощью операторов  COMMIT  или ROLLBACK с опцией
         зованию    RELEASE. Если Вы не выполните COMMIT  и  RELEASE,
                    блокировки, запрошенные  в  процессе работы Вашей
                    программы, будут  держать  ресурсы,  пока  ORACLE
                    RDBMS не  поймет,  что процесс больше не активен.
                    Это может привести к тому,  что остальные пользо-
                    ватели, нуждающиеся в тех же ресурсах, будут ожи-
                    дать или получать ошибки при попытке обращения.

                    Если команда COMMIT выдана без опции RELEASE, Ва-
                    ша текущая    транзакция   будет   записана   без
                    последующего отсоединения от базы данных.

                    ORACLE автоматически откатывает  изменения,  если
                    программа завершается аварийно.

                    Оператор COMMIT WORK не влияет на содержимое host
                    - переменных и на процесс дальнейшей работы  прог-
                    раммы.

         Пример     EXEC SQL COMMIT RELEASE

         Связанные  Операторы ROLLBACK, SAVEPOINT, SET TRANSACTION.
         темы
         
                  Справочное руководство по языку SQL        5-32





                                   -- 113 --




E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         CONNECT (Встроенный SQL)                      F


         Назначение Обеспечивает прямое подключение к  ORACLE  RDBMS.
                    Программа должна это выполнить до того, как попы-
                    тается обратиться к данным.  CONNECT используется
                    для подсоединения пользователя к любой базе данных
                    ORACLE.

         Предпосылки Для специфицируемой базы данных должна быть при-
                     вилегия CONNECT.

         Синтаксис  EXEC SQL CONNECT :user_password
                        [AT dbname]
                        [USING :dbstring]

                    или

                    EXEC SQL CONNECT :user IDENTIFIED BY :password
                        [AT dbname]
                        [USING :dbstring]

         Ключевые   :user_password   одна host - переменная, содержа-
         слова и                     щая имя пользователя  и  пароль,
         параметры                   разделенные слешем "/".
                                     Для автоматической   регистрации
                                     установите значение  этой  пере-
                                     менной в    "/".   Это   говорит
                                     ORACLE, что для регистрации  не-
                                     обходимо использовать  имя поль-
                                     зователя из операционной системы.

                    :user IDENTIFIED позволяет передать имя пользова-
                    By :password     теля и пароль как  два отдельных
                                     элемента.

                    AT dbname        необязательная фраза, определяю-
                                     щая неумалчиваемую  базу данных.
                                     Это имя  должно  быть  предвари-
                                     тельно определено  в   операторе
                                     DECLARE DATABASE.

                    USING            определяет строку   спецификации
                    connect_string   для удаленной  базы  данных  при
                                     работе через SQL*Net.


         Замечания  Если отсутствует фраза AT,  в качестве подразуме-
         по исполь- ваемой используется  база  данных,  указанная  во
         зованию    фразе USING.

                    В программе может быть выполнено несколько опера-
                    торов CONNECT,  но  только  одно соединение может
                    быть выполнено без  использования  фразы  AT  для
                    специфицирования удаленной базы данных.

                                   -- 114 --



                    Если Вы  опустили  фразу USING,  оператор CONNECT
                    подключит Вас к подразумеваемой базе данных.
                    
                      Справочник по SQL - операторам         5-33























































                                   -- 115 --




         Прямое соединение через SQL*Net

                    Прямое соединение требует от Вас установления от-
                    дельных связей с каждым узлом и обращение к  дан-
                    ным любым удобным Вам способом через курсор, отк-
                    рытый для этой  базы  данных.  При  использовании
                    этого  метода Вы присоединяетесь к удаленной базе
                    данных непосредственно,  указывая имя  связи,  на
                    которое  ссылаетесь в других операторах EXEC SQL.
                    Следующий пример иллюстрирует такой метод:

                    :userid = "scott";
                    :password = "tiger";
                    :connect_string = "D:HQVMS";
                    EXEC SQL DECLARE dbname DATABASE;
                    EXEC SQL CONNECT :userid
                      IDENTIFIED BY :password
                      AT dbname
                      USING :connect_string;

                    Последующие SQL  - операторы,  использующие фразу
                    AT,  включающую в себя имя dbname,  будут  выпол-
                    няться  на базе данных,  идентифицирующейся с по-
                    мощью dbname. (Заметьте, что dbname - это не host
                    - переменная и ее значение не может быть изменено
                    в процессе работы; это должен быть правильный SQL
                    - идентификатор).  connect_string содержит строку
                    SQL*Net,  специфицирующую связь с удаленным узлом,
                    имеющем  например,  имя  - MYNODE и работающую по
                    протоколу  DECnet.  (D:MYNODE).  Полное  описание
                    синтаксиса connect_string содержится в "Руководс-
                    тве пользователя SQL*Net"  для  Вашего  протокола
                    SQL*Net.

                    Используя этот метод,  можно выполнить  следующую
                    последовательность команд:

                    EXEC SQL AT remote_db SELECT ...;
                    EXEC SQL AT remote_db INSERT ...;
                    EXEC SQL AR remote_db DECLARE cursor_name
                           CURSOR FOR SELECT...;
                    EXEC SQL OPEN cursor_name...;
                    EXEC SQL FETCH cursor_name...;

                    Заметьте, что  при  открытии курсора и выборке из
                    него Вы не используете фразу AT.  SQL -  оператор
                    будет выполнен на базе данных,  на которую ссыла-
                    ются во фразе AT,  связанной с оператором DECLARE
                    cursor.

                    При использовании  такой техники Вы можете делать
                    все,  к чему имеете привилегии в  удаленной  базе
                    данных (включая модификацию данных).  Кроме того,
                    Вы можете поддерживать несколько  транзакций,  по
                    одной на каждую базу, с которой вы соединены.
         
                  Справочное руководство по языку SQL        5-34

                                   -- 116 --




         Пример     Приводимый ниже оператор используется в протоколе
                    DECnet для подключения пользователя через SQL*Net
                    к удаленной базе данных NYC, ранее определенной с
                    помощью оператора DECLARE DATABASE:

                    EXEC SQL CONNECT :username
                        IDENTIFIED BY :password
                        AT NYC
                        USING D:NYC_NODE

                    Перед запуском этого оператора приложение подклю-
                    чилось к  ORACLE с правильным именем пользователя
                    и паролем.


         Непрямое соединение через SQL*Net

                    Другой путь обращения к удаленным данным из прог-
                    рамм прекомпиляторов - положиться на обеспечивае-
                    мое ORACLE RDBMS средство выполнения распределен-
                    ных запросов.  В этом случае Вы соединены с одной
                    базой данных  (локальной) и она заботится о Вашем
                    соединении с другой (удаленной) базой  данных. Вы
                    передаете SQL - операторы на обработку в свою ба-
                    зу данных,  а она разбивает запрос на части и вы-
                    бирает данные из другой базы.

                    Исчерпывающее обсуждение создания и использование
                    межбазовых связей производится в описании  опера-
                    тора CREATE DATABASE LINK.

                    Заметьте, что  межбазовая связь не связана с име-
                    нем базы данных,  используемой во фразе "AT" пре-
                    компилятора. Межбазовая  связь применяется внутри
                    SQL - оператора после имени таблицы. В противопо-
                    ложность этому,  имя базы данных в прекомпиляторе
                    используется только во фразе "AT" оператора "EXEC
                    SQL" для  идентифицирования,  где  он должен быть
                    выполнен.

                    Заметьте, что в отличие  от  прямого  соединения,
                    межбазовые связи допускают выполнения только опе-
                    ратора SELECT...

         Связанные  Операторы COMMIT RELEASE и DECLARE DATABASE.
         темы












                                   -- 117 --



                      Справочник по SQL - операторам         5-35


E         ЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬЬ                   F

E         Фраза CONSTRAINT                              F

         Назначение Ограничивает  диапазон  подходящих  значений  для
                    столбца или группы столбцов.  При выполнении опе-
                    раторов INSERT,  UPDATE и DELETE  соответствующие
                    ограничения проверяются. Чтобы оператор выполнил-
                    ся успешно, ограничение должно выполняться.

                    Текущая версия ORACLE  Version  6.0  поддерживает
                    синтаксис ограничений и запоминает их определения
                    в словаре данных. В данной версии ограничения (за
                    исключением NOT NULL) не проверяются.

                    Ограничения используются для наложения на столбец
                    или группу столбцов следующих условий:

                    * требование,  чтобы столбец или группа  столбцов
                      содержал значения NOT NULL
                    * требование,  чтобы столбец или группа  столбцов
                      были уникальны для данной таблицы
                    * идентификация столбца или группы  как основного
                      ключа (PRIMARY KEY)
                    * требования наличия значения столбца  или группы
                      в другой таблице (внешний ключ - FOREIGN KEY)
                    * требование удовлетворения  столбца  или  группы
                      некоторому выражению (CHECK)

         Предпосылки Должен использоваться в column_element или table
                    _constraint в операторах  CREATE  TABLE  и  ALTER
                    TABLE. Оператор  CREATE  TABLE требует привилегии
                    RESOURCE.

         Синтаксис  [{UNIQUE | PRIMARY KEY} (column [,column]...)
         ограниче-       [CONSTRAINT constraint] ]
         ния для    [FOREIGN KEY (column [,column]...)
         таблицы      REFERENCES [user.]table [(column [,column]...)]
                         [CONSTRAINT constraint] ]
                    [CHECK (condition) [CONSTRAINT constraint] ]


         Синтаксис  Column [NULL] | [NOT NULL [CONSTRAINT constraint] ]
         ограниче-  [{UNIQUE | PRIMARY KEY}   [CONSTRAINT constraint] ]
         ния для      REFERENCES [user.]table [(column)]
         столбца         [CONSTRAINT constraint] ]
                    [CHECK (condition) [CONSTRAINT constraint] ]
                
                  Справочное руководство по языку SQL        5-36







                                   -- 118 --




                    Column           специфицируется имя  столбца, на
                                     который накладывается ограничение

                    CONSTRAINT       специфицируется имя ограничения.
                    constraint       Эта необязательная  фраза приме-
                                     нима ко всем ограничениям.

                    NULL |           указывает, что столбец может или
                    NOT NULL         не может содержать значения NULL.

                    UNIQUE           требует, чтобы  столбец был уни-
                                     кальным.

                    PRIMARY KEY      определяет столбец  как основной
                                     ключ.

                    FOREIGN KEY      определяет  столбец  как внешний
                    (column..)       ключ  для user.table(column(s)).
                    REFERENCES       По умолчанию columns(s) являются
                    user.table(column)  основным ключом table.

                    CHECK condition  определяет   условие,   которому
                                     должна   удовлетворять   строка,
                                     чтобы находиться в таблице.  Оп-
                                     ределение  синтаксиса  condition
                                     находится в Главе 4  - "Операции
                                     и  функции" данного руководства.

                    Существует два  типа  ограничений:  для  таблиц и
                    столбцов (table constraints, column constraints).
                    Они идентичны, за исключением того, что ограниче-
                    ние для столбца ссылается на  единственный  стол-
                    бец, в  то  время  как  ограничение таблицы может
                    ссылаться на большее число столбцов.

                    Ограничение может быть специфицировано двумя спо-
                    собами:

                    * Определение  ограничений  для таблицы как часть
                    глобального определения таблицы:

                    CREATE TABLE Project_Empoloyee
                        (PROJECT NUMBER,
                         EMPLOYEE NUMBER,
                         PRIMARY KEY (PROJECT,EMPLOYEE) )

                    * Определение  ограничений  для  столбца локально
                    для определенного столбца:

                    CREATE TABLE DEPT
                        (DEPTNO NUMBER PRIMARY KEY, ...)

                    Как и  другие  объекты  базы данных,  ограничения
                    сохраняются в словаре данных.




                                   -- 119 --



                    У Вас есть  возможность  именования  ограничения.
                    Если Вы  не сделали этого,  имя ограничению будет
                    назначено системой в виде SYS_Cn,  где n - целое,
                    делающее это имя уникальным для базы данных.  Та-
                    кие назначенные системой имена  переназначаются в
                    процессе импорта.
                    
                      Справочник по SQL - операторам         5-37


                    Ограничения должны использоваться либо в операто-
                    ре CREATE TABLE,  либо - в ALTER TABLE. Они могут
                    быть удалены  или  добавлены   оператором   ALTER
                    TABLE. Для модификации ограничения его необходимо
                    удалить и вновь добавить.

         NULL       Ограничение NULL  может  применяться  только  для
                    столбцов. Это  ограничение  может  иметь значения
                    NULL либо NOT NULL. Первое означает, что в табли-
                    це может быть сколько угодно строк,  содержащих в
                    этом столбце значение NULL и наоборот,  NOT  NULL
                    означает отсутствие  таких строк.  При отсутствии
                    предполагается ограничение  NULL,  что  разрешает
                    столбцам содержать такие значения.

         Пример     Для включения  в  таблицу  столбца  EMPNO с типом
                    данных NUMBER, имеющего ограничение NOT NULL (имя
                    ограничения NN_CNSTRNT), введите:

                    CREATE TABLE EMP
                   (EMPNO NUMBER(5) NOT NULL CONSTRAINT NN_CNSTRNT...)

         UNIQUE     Ограничение QNIQUE:

                      * требует,  чтобы каждая строка  имела  в  этом
                        столбце различные значения
                      * требует, чтобы столбец был объявлен NOT NULL
                      * требует, чтобы столбец не был основным ключом.

         Пример     Для включения  в  таблицу  столбца  ENAME с типом
                    данных CHAR, имеющего ограничение QNIQUE (имя ог-
                    раничения UNQ_NAME), введите:

                    CREATE TABLE EMP ( ...
                         ENAME CHAR(19) UNIQUE CONSTRAINT UNQ_NAME
                         ... )

                    Для включения  в таблицу EMP столбцов с кодом ра-
                    йона и телефонного номера, определив им ограниче-
                    ние UNIQUE (ограничение для таблицы), введите:

                    ALTER TABLE EMP
                       ADD (PHONE_AREA_CODE CHAR(3) NOT NULL,
                            PHONE_NUMBER CHAR(8) NOT NULL,
                            UNIQUE (PHONE_AREA_CODE,PHONE_NUMBER)
                            CONSTRAINT PHONE_CNSTR)
                    
                  Справочное руководство по языку SQL        5-38

                                   -- 120 --




         PRIMARY KEY  Основной ключ:

                        * служит  для  уникального  идентифицирования
                          каждой строки таблицы
                        * является объединением требования  UNIQUE  и
                          требования NOT NULL
                        * требует,  чтобы столбец не имел ограничения
                          UNIQUE
                        * может быть указан для таблицы  только  один
                          раз,  хотя  и  может состоять из нескольких
                          столбцов. Если основной ключ содержит толь-
                          ко один столбец,  можно воспользоваться как
                          ограничением для столбца,  так и для табли-
                          цы. Если - более одного столбца, необходимо
                          воспользоваться ограничением для таблицы.

         Пример     Для включения в таблицу EMP  столбца  EMPNO  типа
                    NUMBER с  ограничением PRIMARY KET (имя ограниче-
                    ния PK_CNSTRNT), введите:

                    CREATE TABLE EMP
                        (EMPNO NUMBER(5) PRIMARY KEY CONSTRAINT
                         PK_CNSTRNT, ...)

                    Для создания таблицы, связывающей магазины и кон-
                    тейнеры и  определения  SHIP_NO  и CONTAINER_NO в
                    качестве основного ключа, введите:

                    CREATE TABLE SHIP_CONTAINER
                       (SHIP_NO NUMBER NOT NULL,
                        CONTAINER_NO NUMBER NOT NULL,
                        PRIMARY KEY (SHIP_NO, CONTAINER_NO))

         FOREIGN KEY Таблица, имеющая ограничение REFERENCES, называ-
                    ется таблицей внешнего ключа.  Таблица, к которой
                    обращаются через ограничение REFERENCES,  называ-
                    ется таблицей основного ключа.  В дальнейшем  об-
                    суждении EMP  - таблица внешнего ключа,  а DEPT -
                    таблица основного ключа.

                    Ограничение FOREIGN KEY/REFERENCES:

                      * реализует  концепцию  "внешнего  ключа",  как
                        описано в Главе 1 "Реляционная модель"
                      * будет  отвергать  попытки  выполнения  команд
                        INSERT и UPDATE со значениями,  не существую-
                        щими в таблице основного ключа
                      * будет  отвергать  попытки  выполнения команды
                        DELETE, если последняя не согласуется с  огра-
                        ничением REFERENCES.  Например - отдел не мо-
                        жет быть удален из таблицы DEPT,  если в таб-
                        лице EMP  существуют  служащие,  работающие в
                        данном отделе.
                        
                      Справочник по SQL - операторам         5-39



                                   -- 121 --




                      * должно   ссылаться  на  столбец  (или  группу
                        столбцов) PRIMARY KEY или  UNIQUE  в  таблице
                        основного ключа
                      * должно ссылаться на  столбец  PRIMARY  KEY  в
                        таблице основного ключа
                      * должно ссылаться именно на таблицу,  а не  на
                        обзор или кластер
                      * требует,  чтобы Вы были владельцем или  имели
                        привилегию REFERENCE  для  таблицы  основного
                        ключа, или  имели  привилегию  REFERENCE   для
                        столбцов, на которые ссылаетесь в таблице ос-
                        новного ключа.
                      * не  существует ограничений на количество ссы-
                        лок к столбцу или таблице.  Следовательно, на
                        столбец можно ссылаться несколько раз
                      * требует,  чтобы типы данных столбцов внешнего
                        ключа и  тех,  на которые он ссылается,  были
                        одинаковыми (совпадение имен не обязательно)
                      * может  ссылаться  на  ту же самую таблицу (на
                        саму себя)
                      * не должно ссылаться на один столбец несколько
                        раз (хотя к одному столбцу можно  ссылаться с
                        помощью нескольких  ограничений внешнего клю-
                        ча).

                    При использовании в ограничении для таблицы  син-
                    таксис FOREIGN  KEY  (column [,column...]) должен
                    предшествовать ключевому слову REFERENCES.

                    Если для ограничения FOREIGN KEY нет соответству-
                    ющего списка REFERENCES, то столбец предполагает-
                    ся PRIMARY KEY в таблице REFERENCES.

                    Информация об ограничениях таблиц и столбцов  за-
                    поминается в      таблицах     словаря     данных
                    CONSTRAINT_DEFS и CONSTRAINT_COLUMNS.
                    
                  Справочное руководство по языку SQL        5-40




















                                   -- 122 --




         Пример     Если столбец DEPTNO рассматривается в таблице EMP
                    в качестве внешнего ключа, служащий не может быть
                    добавлен в таблицу EMP,  пока его DEPTNO содержит
                    значение NULL (предполагаем, что DEPTNO разрешает
                    наличие значений NULL) или оно не совпадает с од-
                    ним из значений DEPTNO в таблице  DEPT. Следующий
                    пример иллюстрирует часть оператора CREATE TABLE,
                    необходимую для создания внешнего  ключа  DEPTNO,
                    ссылающегося на столбец DEPTNO в таблице DEPT:

                    CREATE TABLE EMP

                      ( ...,
                       deptno NUMBER REFERENCES scott.dept ( deptno )
                          CONSTRAINT deptno_fk,
                      ... )

                    Для добавления к таблице ORDERS  столбцов SHIP_NO
                    и CONTEINER_NO  и  определения  ссылки на таблицу
                    SHIP_CONTAINER пользователя BLAKE используя  син-
                    таксис ограничений на таблицу, необходимо ввести:

                    ALTER TABLE ORDERS
                      ADD (SHIP_NO NUMBER NOT NULL,
                           CONTAINER_NO NUMBER NOT NULL,
                           FOREIGN KEY (SHIP_NO, CONTAINER_NO)
                            REFERENCES BLAKE.SHIP_CONTAINER
                                       CONSTRAINT ORDERS_FK)

         CHECK      Синтаксис ограничения CHECK идентичен для столбца
                    и таблицы.   Ограничение  CHECK  может  ссылаться
                    только на столбцы той же таблицы.  В  ограничении
                    для столбца нельзя ссылаться на другой столбец за
                    исключением самого себя; в ограничении для табли-
                    цы можно сослаться на несколько столбцов.

         Пример     CREATE TABLE dept
                     (deptno NUMBER CHECK (deptno between 10 and 99),
                      dname CHAR(9) CHECK (dname = upper(dname)),
                      loc CHAR(10) CHECK (loc in ('DALLAS','BOSTON',
                                           'NEW YORK')))

                    Первая фраза CHECK страхует от ввода номера отде-
                    ла меньше 10 и свыше 99;  вторая проверяет, чтобы
                    все названия отделов были введены символами верхне-
                    го регистра; третья проверяет, чтобы названия го-
                    родов, в   которых   располагаются  отделы  были:
                    DALLAS, BOSTON и NEW YORK.

                    Для добавления ограничения,  гарантирующего,  что
                    оклад и  комиссионные  в сумме не могут превышать
                    5000 долларов, следует ввести такой оператор:

                    ALTER TABLE EMP
                       ADD (CHECK (SAL+COMM 5000))
                    
                      Справочник по SQL - операторам         5-41

                                   -- 123 --




         Пример дополнительных ограничений для таблицы

                    В следующем  операторе CREATE TABLE вводится одно
                    ограничение PRIMARY KEY,  два ограничения FOREIGN
                    KEY и два ограничения CHECK (все на уровне табли-
                    цы):

                    CREATE TABLE order_detail
                      (order_id NUMBER,
                       part_number NUMBER,
                       ... ,
                       PRIMARY KEY(order_id, part_number) CONSTRAINT
                                                          oid_pno_pk,
                       FOREIGN KEY(order_id)
                         REFERENCES scott.order(order_id) CONSTRAINT
                                                          oid_fk,
                       FOREIGN KEY(part_number)
                         REFERENCES scott.part(part_number) CONSTRAINT
                                                          pno_fk,
                       CHECK (order_id > 0) CONSTRAINT oid_ck,
                       CHECK (part_number > 0) CONSTRAINT pno_ck
                      ... )

                    1. Основной  ключ таблицы ORDER_DETAIL комбиниру-
                       ется из столбцов ORDER_ID и PART_NUMBER.
                    2. ORDER_ID  - это внешний ключ из таблицы ORDER,
                       а PART_NUMBER - из таблицы PART.
                    3. Ни   ORDER_ID,   ни   PART_NUMBER   в  таблице
                       ORDER_DETAIL не могут иметь значения NULL, так
                       как входят в основной ключ. ( Это неявно обес-
                       печивается ограничением PRIMARY KEY и следова-
                       тельно, нет  необходимости  указывать  это от-
                       дельно при описании столбцов).
                    4. Так  как оба столбца являются внешними ключами,
                       ни одна строка не может быть добавлена к  таб-
                       лице, пока  в таблице ORDER не будет существо-
                       вать соответствующего значения ORDER_ID,  а  в
                       таблице PATR - PART_NUMBER.
                    5. Фраза CHECK гарантирует,  что  и  ORDER_ID,  и
                       PART_NUMBER будут больше нуля.

                    Заметьте, что написание FOREIGN KEY(column1,column2)
                    означает, что column1 и column2  комбинируются  в
                    одном внешнем     ключе.     Синтаксис    FOREIGN
                    KEY(column1) ...,FOREIGN KEY(column2) ... создает
                    два ограничения, по одному на каждый внешний ключ.

         Связанные  Оператор CREATE TABLE и элемент описания для стол-
         темы       бца.
                    

KOAP Open Portal 2000