Ответы:
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
NOT NULLто он должен быть указан в запросе, иначе он будет установлен NULLпо умолчанию. ALTER TABLE [Employee] ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
alter table Employee alter column salary numeric(22,5)
ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150)
Запуск 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
Выберите таблицу -> Дизайн -> изменить значение в Типе данных, показанном на следующем Рис.
Сохранить дизайн таблиц.
Интересный подход можно найти здесь: Как увеличить ваши столбцы без простоя от spaghettidba
Если вы попытаетесь расширить этот столбец прямой командой «ALTER TABLE», вам придется подождать, пока SQLServer пройдет по всем строкам и запишет новый тип данных.
ALTER TABLE tab_name ALTER COLUMN col_name new_larger_data_type;Чтобы преодолеть это неудобство, есть волшебная таблетка для увеличения колонны, которую может принять ваш стол, и она называется « Сжатие строк». (...) При сжатии строк столбцы с фиксированным размером могут использовать только пространство, необходимое для наименьшего типа данных, в который помещаются фактические данные.
Когда таблица сжимается на ROWуровне, ALTER TABLE ALTER COLUMNэто только операция с метаданными.