Введение в стандарты языка баз данных SQL


Оператор изменения схемы таблицы - часть 2


<drop column definition> ::= DROP [ COLUMN ] <column name> <drop behavior> <drop behavior> ::= CASCADE | RESTRICT

Пояснения:

  1. Если в определении удаления столбца указано RESTRICT, то на удаляемый столбец не должно быть ссылок в выражении запроса любого существующего представления и в условии поиска любого существующего ограничения, кроме табличных ограничений, ссылающихся только на этот столбец и входящих в описание данной таблицы.
  2. Если в определении удаления столбца указано CASCADE, то любой зависимый объект уничтожается при выполнении неявного оператора REVOKE (см. ниже).
  3. Пусть A обозначает текущий идентификатор авторизации. Пусть T - имя таблицы, для которой выполняется оператор ALTERTABLE, а C - имя удаляемого столбца. Тогда при удалении столбца неявно выполняется следующий оператор от имени текущего системного идентификатора авторизации: REVOKEINSERT(CN), UPDATE(CN), REFERENCES(CN) ONTABLETN FROMACASCADE.
  4. Пусть V - имя любого представления, ссылающегося на столбец C таблицы T. При удалении столбца неявно выполняется следующий оператор от имени текущего системного идентификатора авторизации: DROPVIEWVNCASCADE.
  5. Идентифицируемый столбец и его описатель уничтожаются.
  6. Степень T уменьшается на единицу. Порядковые номера всех столбцов с порядковым номером больше чем у C уменьшаются на единицу.

Определение добавления табличного ограничения имеет следующий синтаксис:

<add table constraint definition> ::= ADD <table constraint definition>

Это определение не нуждается в пояснениях.

Определение уничтожения табличного ограничения имеет следующий синтаксис:

<drop table constraint definition> ::= DROP CONSTRAINT <constraint name> <drop behavior>

Пояснения:

  1. Пусть T имя таблицы, упоминаемой в операторе ALTERTABLE, а TC - имя уничтожаемого ограничения целостности.
  2. Если TC является ограничением уникальности и существует ссылочное ограничение RC со ссылкой на таблицу T по столбцам уникальности TC, то будем говорить, что RC зависит от TC.
  3. Если указано RESTRICT, то никакое табличное ограничение не должно зависеть от TC.
  4. Если указано CASCADE, то все зависимые объекты уничтожаются при выполнении неявного оператора ALTERTABLE (см. ниже).
  5. Пусть TCN2 - имя любого табличного ограничения, зависящего от TC, и пусть T2 - имя таблицы, определение которой включало TCN2. Тогда выполняется неявный оператор ALTERTABLET2 DROPCONSTRAINTTCN2 CASCADE.
  6. Описатель TC удаляется из описания таблицы T.
  7. Идентифицированное табличное ограничение и его описатель разрушаются.




- Начало -  - Назад -  - Вперед -