Ответы:
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
это только операция с метаданными.