Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Удаление столбцов таблицы

Удаление столбцов таблицыОперация удаления столбцов в Microsoft SQL Server связана с большим числом ограничений, чем в Oracle. К примеру, столбец не может быть удален, если он используется в ограничениях или индексах, ассоциирован с некоторым значением по умолчанию или включен в правило. Следующая инструкция завершится ошибкой, так как столбец PHONE_PRIMARY_S используется в ограничении проверки CHK_PHONEPRIM, а также ассоциирован со значением по умолчанию. В то же время следующая инструкция будет выполнена успешно, поскольку столбец PHONE_ CATEGORY_S не является предметом вышеупомянутых ограничений. Очевидно, что таблицы занимают физическое пространство, поэтому из соображений эффективности их лучше удалять сразу же, как только необходимость в них отпала. Инструкция DROP TABLE работает практически одинаково в СУБД ведущей тройки производителей. Она высвобождает физическое пространство, занимаемое удаляемой таблицей, а также всеми индексами, с ней связанными. Из словаря базы данных удаляются определения таблицы, а также связанные с ней индексы, ограничения целостности и триггеров. Однако следует отметить, что в тройке ведущих СУБД все представления, ссылающиеся на удаляемую таблицу, становятся некорректными и подлежат изменению (точнее, удалению из них ссылок на данную таблицу) или ручному удалению из базы данных. Это несколько не согласуется со стандартом SQL:2003, который требует исключительно удаления всех объектов, ссылающихся на удаляемую таблицу, в том числе и представлений. Инструкция drop table является частью языка DDL, поэтому необратима. В частности, она подтверждается немедленно и не допускает отката операции (по крайней мере, так происходит в СУБД тройки крупнейших производителей, что не согласуется со стандартом SQL:2003). Будьте крайне осторожны с этой инструкцией.