Изменение размера столбца в SQL Server


Ответы:


507
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL

6
Будьте осторожны, если вы изменяете столбец в очень большой таблице данных. Вы можете вызвать сбой (в любом случае, в моей среде).
DavidTheDev

55
Также важно, что если столбец имеет атрибут, NOT NULLто он должен быть указан в запросе, иначе он будет установлен NULLпо умолчанию. ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
Сувенду Шекхар Гири

8
Если у вас есть индекс для этого столбца, вам придется его удалить, затем выполнить код таблицы изменений и затем снова создать индекс
Sr.PEDRO



19

Запуск ALTER COLUMNбез упоминания атрибута NOT NULLприведет к тому, что столбец будет заменен на nullable, если это уже не так. Следовательно, вам нужно сначала проверить, может ли столбец обнуляться, а если нет, указать атрибут NOT NULL. В качестве альтернативы вы можете использовать следующий оператор, который предварительно проверяет обнуляемость столбца и запускает команду с правильным атрибутом.

IF COLUMNPROPERTY(OBJECT_ID('Employee', 'U'), 'Salary', 'AllowsNull')=0
    ALTER TABLE [Employee]
        ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
ELSE        
    ALTER TABLE [Employee]
        ALTER COLUMN [Salary] NUMERIC(22,5) NULL

6

Выберите таблицу -> Дизайн -> изменить значение в Типе данных, показанном на следующем Рис.

введите описание изображения здесь

Сохранить дизайн таблиц.


проверьте, возможно, вы пропустили какой-то шаг.
Арнав

7
Инструменты -> Параметры ... /> Дизайнеры -> Дизайнеры таблиц и баз данных - снимите флажок "Запретить сохранение изменений, которые требуют пересоздания таблицы"
января

Для большинства вещей я предпочитаю писать сценарии. Но для изменений столбцов мне нравится пользовательский интерфейс. Не забывайте проверять наличие NOT NULL или каких-либо вычислений или каких-либо дополнительных свойств столбца. Просто нажмите Сохранить (после внесения изменений в SSMS как примечания @ 7anner).
Джейкоб Х,

1

Интересный подход можно найти здесь: Как увеличить ваши столбцы без простоя от spaghettidba

Если вы попытаетесь расширить этот столбец прямой командой «ALTER TABLE», вам придется подождать, пока SQLServer пройдет по всем строкам и запишет новый тип данных.

ALTER TABLE tab_name ALTER COLUMN col_name new_larger_data_type;

Чтобы преодолеть это неудобство, есть волшебная таблетка для увеличения колонны, которую может принять ваш стол, и она называется « Сжатие строк». (...) При сжатии строк столбцы с фиксированным размером могут использовать только пространство, необходимое для наименьшего типа данных, в который помещаются фактические данные.

Когда таблица сжимается на ROWуровне, ALTER TABLE ALTER COLUMNэто только операция с метаданными.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.