Odpowiedzi:
ALTER TABLE [Employee]
ALTER COLUMN [Salary] NUMERIC(22,5) NOT NULL
NOT NULL
to musi być wymieniona w zapytaniu, w przeciwnym razie NULL
domyślnie ją ustawi . 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)
Uruchomienie ALTER COLUMN
bez wzmianki o atrybucie NOT NULL
spowoduje zmianę kolumny na null, jeśli już nie jest. Dlatego musisz najpierw sprawdzić, czy kolumna ma wartość zerową, a jeśli nie, podaj atrybut NOT NULL
. Alternatywnie możesz użyć poniższej instrukcji, która sprawdza wcześniej nullability kolumny i uruchamia polecenie z odpowiednim atrybutem.
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
Wybierz tabelę -> Projekt -> zmień wartość w typie danych pokazanym na poniższym ryc.
Zapisz projekt stołów.
Ciekawe podejście można znaleźć tutaj: jak powiększyć kolumny bez przestoju autorstwa spaghettidba
Jeśli spróbujesz powiększyć tę kolumnę za pomocą prostej komendy „ALTER TABLE”, musisz poczekać, aż SQLServer przejdzie przez wszystkie wiersze i zapisze nowy typ danych
ALTER TABLE tab_name ALTER COLUMN col_name new_larger_data_type;
Aby przezwyciężyć tę niedogodność, istnieje magiczna pigułka na powiększanie kolumn, którą może wziąć twój stół, i nazywa się to kompresją rzędową. (...) Dzięki kompresji wierszy kolumny o stałym rozmiarze mogą zajmować tylko miejsce potrzebne najmniejszemu typowi danych, w którym mieszczą się rzeczywiste dane.
Gdy tabela jest kompresowana na ROW
poziomie, wówczas ALTER TABLE ALTER COLUMN
operacja dotyczy wyłącznie metadanych.