Jak dodać kolumnę z wartością domyślną do istniejącej tabeli w SQL Server
W SQL Server, aby dodać kolumnę z wartością domyślną do istniejącej tabeli użyj ALTER
Tabela ADD
nazwa kolumny z NULL/NOT NULL
ograniczenie z DEFAULT
wartość.
Poniżej składnia zapytania serwera sql może być użyta do dodania kolumny z wartością domyślną w istniejącej tabeli.
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
Przejdźmy przez przykład, aby zrozumieć to dalej.
Dodanie kolumny Non-Nullable z wartością domyślną dla istniejących rekordów
Rozważmy tabelę Employee
w serwerze SQL, i jeśli chcemy dodać kolumnę płacy minimalnej z wartością domyślną jako 1000USD
, użyj poniższego zapytania.
ALTER TABLE Employee
ADD MINIMUM_WAGE int NOT NULL DEFAULT(1000)
GO
Powyższe zapytanie doda nową kolumnę MINIMUM_WAGE
w tabeli Employee
i wypełni kolumnę w istniejących wierszach wartością domyślną tj. 1000
.
Ponieważ dodaliśmy ograniczenie NOT NULL
.
Jeśli nie dodamy ograniczenia NOT NULL
, wszystkie istniejące wiersze będą miały wartość NULL
, a podana wartość DEFAULT
nie będzie miała żadnego wpływu.
ALTER TABLE Employee
ADD MINIMUM_WAGE int DEFAULT(1000)
GO
Wszystkie wartości kolumny MINIMUM_WAGE
będą miały wartość NULL
.
Musisz dodać wartość DEFAULT
jeśli dodajesz ograniczenie NOT NULL
jeśli tabela nie jest pusta.
Na przykład, jeśli tabela Employee
nie jest pusta, a jeśli dodasz nową kolumnę z ograniczeniem NOT NULL
, wyrzuci błąd.
ALTER TABLE Employee
ADD MINIMUM_WAGE int NOT NULL
GO
Powyższe zapytanie do serwera sql wyrzuci poniższy błąd podczas dodawania nowej kolumny do istniejącej tabeli.
ALTER TABLE only allows columns to be added that can contain nulls, or have a DEFAULT definition specified, or the column being added is an identity or timestamp column, or alternatively if none of the previous conditions are satisfied the table must be empty to allow addition of this column. Column 'MINIMUM_WAGE' cannot be added to non-empty table 'Employee' because it does not satisfy these conditions.
Jeśli tabela Employee
jest pusta.
Powyższe zapytanie do serwera sql doda nową kolumnę bez żadnych problemów.
Dodanie kolumny Nullable z wartością domyślną dla istniejących rekordów
Jeśli chcesz dodać kolumnę nullable z wartością domyślną dla istniejących rekordów, musisz użyć WITH VALUES
w instrukcji sql.
ALTER TABLE Employee
ADD MINIMUM_WAGE INT
CONSTRAINT Minimum_Pay DEFAULT 1000 WITH VALUES
Powyższe zapytanie doda kolumnę nullable do tabeli serwera sql z wartością domyślną dla istniejących rekordów.
Jeśli w tym tutorialu nauczyliśmy się dodawać kolumnę zarówno nullable jak i non nullable colums do tabeli serwera sql z wartością domyślną dla wszystkich istniejących rekordów.