SQL Server ИЗМЕНИТЬ ТАБЛИЦУ ИЗМЕНИТЬ СТОЛБЕЦ

В этом руководстве вы узнаете, как использовать оператор SQL Server ALTER TABLE ALTER COLUMN для изменения столбца таблицы.

SQL Server позволяет вносить следующие изменения в существующий столбец таблицы:

  • Изменить тип данных
  • Изменить размер
  • Добавить ограничение NOT NULL

Изменить тип данных столбца

Чтобы изменить тип данных столбца, используйте следующий оператор:

ALTER TABLE table_name 
ALTER COLUMN column_name new_data_type(size);

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

См. следующий пример.

Сначала создайте новую таблицу с одним столбцом, тип данных которого — INT:

CREATE TABLE t1(c INT);

Во-вторых, вставьте несколько строк в таблицу:

    INSERT INTO t1
    VALUES
       (1),
       (2),
       (3);

Во-вторых, измените тип данных столбца с INT на VARCHAR:

ALTER TABLE t1 ALTER COLUMN c VARCHAR(2);

В-третьих, вставьте новую строку с данными строки символов:

INSERT INTO t1
VALUES('@');

В-четвертых, измените тип данных столбца с VARCHAR обратно на INT:

ALTER TABLE t1 ALTER COLUMN c INT;

SQL Server выдал следующую ошибку:

Conversion failed when converting the varchar value '@' to data type int.

Изменить размер столбца

Следующий оператор создает новую таблицу с одним столбцом, тип данных которого VARCHAR(10):

CREATE TABLE t2(c VARCHAR(10));

Давайте вставим некоторые примеры данных в таблицу t2:

INSERT INTO t2
VALUES
   ('SQL Server'),
   ('Modify'),
   ('Column')

Увеличить размер столбца можно следующим образом:

ALTER TABLE t2 ALTER COLUMN c VARCHAR(50);

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

Например, если уменьшить размер столбца c до 5 символов:

ALTER TABLE t2 ALTER COLUMN c VARCHAR(5);

SQL Server выдал следующую ошибку:

String or binary data would be truncated.

Добавить ограничение NOT NULL к столбцу, допускающему значение NULL

Следующий оператор создает новую таблицу со столбцом, допускающим значение NULL:

CREATE TABLE t3(c VARCHAR(50));

Следующий оператор вставляет несколько строк в таблицу:

INSERT INTO t3
VALUES
   ('Nullable column'),
   (NULL);

Если вы хотите добавить ограничение NOT NULL к столбцу c, вам необходимо сначала обновить NULL до ненулевого значения, например:

UPDATE t3
SET c = ''
WHERE
    c IS NULL;

А затем добавьте ограничение NOT NULL:

ALTER TABLE t3 ALTER COLUMN c VARCHAR(20) NOT NULL;

В этом руководстве вы узнали, как использовать инструкцию SQL Server ALTER TABLE ALTER COLUMN для изменения некоторых свойств существующего столбца.

Мирослав С.

Автор статей, ИБ-специалист