Модификация столбца

Синтаксис команды:

ALTER TABLE <имя таблицы>

ALTER COLUMN <имя столбца> <новый тип данных> <длина>

[DEFAULT <значение>]

[NULL|NOT NULL] [,…n];

SQL Server не разрешает изменять столбцы типа text, ntext, image, rowversion, вычисляемые столбцы, столбцы, используемые в репликации, и столбцы, на которые имеются ссылки в выражениях вычисляемых столбцов или ограничений, а также столбцы с установленным свойством ROWGUIDCOL[6]. Нельзя удалить или изменить столбец, имеющий значение по умолчанию (ограничение DEFAULT). Однако можно увеличить размер столбцов переменой длины, которые используются в индексах, в ограничениях CHECK или UNIQUE.

Пример 33

Задача.

Увеличить ширину столбца NameGroup, увеличив ее до 20 символов.

Решение.

ALTER TABLE SGroup

ALTER COLUMN NameGroup VARCHAR(20)

The command(s) completed successfully.

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

Пример 34

Задача.

Уменьшить размер столбца NameGroup до 15 символов (предполагается, что ранее она была увеличена до 20 символов).

Решение.

ALTER TABLE SGroup

ALTER COLUMN NameGroup VARCHAR(15)

На этот раз будет диагностирована ошибка.

Server: Msg 5074, The object 'SgroupNameGroupUnique' is dependent on column 'NameGroup'.

Server: Msg 4922, ALTER TABLE ALTER COLUMN NameGroup failed because one or more objects access this column.

Если столбец все-таки необходимо изменить, то сначала следует удалить ограничение SgroupNameGroupUnique,

ALTER TABLE SGroup

DROP CONSTRAINT SgroupNameGroupUnique

Затем уменьшить ширину столбца.

ALTER TABLE SGroup

ALTER COLUMN NameGroup VARCHAR(15)

(2 row(s) affected)

Задание 15

Добавить в таблицу Student столбец Single, тип данных VARCHAR(3), назначив значение по умолчанию “Да”. Удалить столбец.

Задание 16

Добавить в таблицу Student столбец AVGMARK, тип Numeric (5,2). В столбце будет храниться средняя оценка студента. Мы оставим этот столбец в базе данных лишь для того, чтобы в дальнейшем продемонстрировать с помощью него работу некоторых команд и процедур, написание которых как раз и будет обусловлено наличием этого избыточного столбца. Отсюда вывод - такие столбцы, содержащие расчетные данные, полученные на основании уже хранящихся в таблице данных, не следует включать в таблицы.

Задание 17

Изменить длины полей в соответствии с таблицей (см. Таблица 12). Выполнить анализ - почему не удалось выполнить заданные операции с некоторыми столбцами? Что необходимо предпринять, чтобы эти изменения всё же произвести?

Таблица 12

Имя поля Тип поля Размер Ограничения
IDReport Varchar    
NameWork Varchar    
NameSubject Varchar    
DateHire Smalldatetime    
Mark Numeric   NULL
DeptName Varchar   NULL
NRecordBook Varchar    
NTerm Numeric    
NameReport Varchar    
NameSubject Varchar    
PIN Varchar    
TeachPost Varchar   NULL
Clock Numeric 5.2  
SName Varchar    
TeachName Varchar    

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: