Модификация параметров столбца идентичности
Существует возможность изменить параметры столбца идентичности. Предположим, что создана таблица PAYMENT_TERMS со столбцом идентичности PAYTERMS_ID_N (см. главу 4). Следующая инструкция изменит параметры столбца идентичности так, чтобы после достижения максимального значения 500 значение в цикле возвращалось к 100.Аназаметку Выполнение этой инструкции завершится неудачей, если payment_id_n не создавался как столбец идентичности. Для добавления столбца в инструкции ALTER TABLE используется тот же синтаксис, что и для создания столбца в инструкции CREATE TABLE. При этом также могут быть указаны порядок сопоставления, значения по умолчанию, свойства идентичности и ограничения. Следующая инструкция добавляет в таблицу PHONE два новых столбца. Модификация существующих столбцов Правила модификации существующих столбцов в Microsoft SQL Server отличаются от действующих в DB2 и Oracle. К примеру, невозможно изменить тип данных столбца, на котором основано ограничение, или задать для него значение по умолчанию. Также не удастся изменить столбцы с типами данных TEXT, NTEXT, IMAGE и TIMESTAMP. Существуют и некоторые другие ограничения; более подробно о них можно прочитать в документации к СУБД. В то же время, в отличие от Oracle, можно уменьшить размер столбца, правда, только в том случае, если все существующие данные вписываются в новый размер и от данного столбца не зависят никакие другие объекты базы данных. К примеру, Microsoft SQL Server разрешит уменьшить размер столбца PHONE_TYPE_S c VARCHAR(2 0) до VARCHAR(10) и даже до VAR — CHAR(5), поскольку самая длинная строка, хранимая в этом поле, имеет длину всего в пять символов. В то же время СУБД вернет ошибку при попытке уменьшить размер этого столбца до 4 символов. Microsoft SQL Server аналогично ведет себя и с числовыми столбцами. Существует возможность уменьшить масштаб, однако только до размера самого большого числа в столбце. Следующая инструкция изменит тип данных столбца ORDLINE_ORDQTY_N с INTEGER на NU — MERIC(3). Однако попытка изменения типа на NUMERIC(2) завершится неудачей, поскольку самые большие числа в этом столбце могут превышать 100.