ВВЕДЕНИЕ В СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ



         

Синтаксис операторов SQL, использующих ограничения - часть 3


Если такие ссылки найдутся, то операция удаления в таблице City будет отвергнута.
  • Колонка District_Id также является внешним ключом, ссылающимся на первичный ключ таблицы District. Этот внешний ключ, в отличие от предыдущего, определен как ограничение таблицы. Действия, определенные по ссылке аналогичны предыдущим.
  • Колонки (Fam, Im, BirthDate) образуют альтернативный ключ таблицы. Это ограничение имеет наименование AltKey.
  • Колонки City_Id и District_Id не могут одновременно принимать NULL-значения (хотя каждая из них по отдельности допускает использование NULL-значений).

    ALTER TABLE Имя таблицы

    {ADD [COLUMN] Определение столбца}

    | {ALTER [COLUMN] Имя столбца {SET DEFAULT Значение по умолчанию | DROP DEFAULT}}

    | {DROP [COLUMN] Имя столбца RESTRICT | CASCADE}

    | {ADD Ограничение таблицы}

    | {DROP CONSTRAINT Имя ограничения RESTRICT | CASCADE}

    Этот оператор позволяет изменять имеющуюся таблицу. В таблице можно удалять или добавлять колонки и/или ограничения. Кроме того, для колонок можно менять значение по умолчанию.

    DROP TABLE Имя таблицы CASCADE | RESTRICT

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

    Если указан параметр RESTRICT, то таблица удаляется только если нет никаких ссылок на эту таблицу в других ограничениях или представлениях.

    Если указан параметр CASCADE, то удаляются также и все объекты, ссылающиеся на эту таблицу.

    CREATE ASSERTION Имя утверждения

    Ограничение check

    [Атрибуты ограничения]

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

    Предикат CHECK, входящий в определение утверждения, может быть достаточно сложным и содержать ссылки на несколько таблиц.

    Пример 20.

    CREATE ASSERTION Check_Pay CHECK (Salespeaple.Salary IS NOT NULL) OR (Salespeaple.Commission IS NOT NULL) DEFERRABLE INITIALLY IMMEDIATE

    DROP ASSERTION Имя утверждения

    Этот оператор позволяет удалять имеющееся утверждение.

    COMMIT WORK

    Этот оператор фиксирует транзакцию. При этом проверяются все отложенные до конца транзакции ограничения. Если одно из ограничений не выполняется, то транзакция откатывается.

    SET CONSTRAINT {Имя ограничения.,.. | ALL}

    {DEFERRED | IMMEDIATE}

    Этот оператор позволяет во время выполнения транзакции менять момент проверки всех (ALL) или некоторых ограничений. Этот оператор действует только на ограничения, определенные как DEFERRABLE (потенциально откладываемые). Если ограничение A находилось в состоянии IMMEDIATE (немедленно проверяемое), то оператор SET CONSTRAINT A DEFERRED переводит его в состояние DEFERRED (с отложенной проверкой) и тогда все операции, потенциально могущие нарушить это ограничение, будут выполняться без проверки. Проверка будет произведена в конце транзакции или в момент подачи команды SET CONSTRAINT A IMMEDIATE.




    Содержание  Назад  Вперед