Cum să adăugați o coloană cu o valoare implicită la o tabelă existentă în SQL Server

În SQL Server, pentru a adăuga o coloană cu o valoare implicită la un tabel existent, utilizați ALTER Numele coloanei din tabelul ADD cu constrângerea NULL/NOT NULL și valoarea DEFAULT.

Pentru a adăuga o coloană cu valoare implicită în tabelul existent, se poate utiliza sintaxa de interogare SQL Server de mai jos.

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES

Să trecem printr-un exemplu pentru a înțelege mai bine.

Adăugarea unei coloane Non-Nullable cu valoare implicită pentru înregistrările existente

Luați în considerare o tabelă Employee în SQL server și, dacă dorim să adăugăm o coloană de salariu minim cu valoare implicită ca 1000USD, utilizați interogarea de mai jos.

ALTER TABLE Employee
ADD MINIMUM_WAGE int NOT NULL DEFAULT(1000)
GO

Interogarea de mai sus va adăuga o nouă coloană MINIMUM_WAGE în tabelul Employee și va completa coloana din rândurile existente cu valoarea implicită, adică 1000.

Deoarece am adăugat constrângerea NOT NULL.

Dacă nu adăugați constrângerea NOT NULL, toate rândurile existente vor fi NULL, iar valoarea DEFAULT furnizată nu va avea niciun impact.

ALTER TABLE Employee
ADD MINIMUM_WAGE int DEFAULT(1000)
GO

Toate valorile coloanei MINIMUM_WAGE vor fi NULL.

Trebuie să adăugați valoarea DEFAULT dacă adăugați constrângerea NOT NULL dacă tabelul nu este gol.

De exemplu, dacă tabelul Employee nu este gol și dacă adăugați o nouă coloană cu constrângerea NOT NULL, se va produce o eroare.

ALTER TABLE Employee
ADD MINIMUM_WAGE int NOT NULL
GO

Interogarea serverului sql de mai sus va genera eroarea de mai jos la adăugarea unei noi coloane în tabelul existent.

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.

Dacă tabelul Employee este gol.

Interogarea SQL Server de mai sus va adăuga o nouă coloană fără probleme.

Adăugarea unei coloane Nullable cu valoare implicită pentru înregistrările existente

Dacă doriți să adăugați o coloană “nullable” cu valoare implicită pentru înregistrările existente, trebuie să utilizați WITH VALUES în declarația sql.

ALTER TABLE Employee
ADD MINIMUM_WAGE INT
CONSTRAINT Minimum_Pay DEFAULT 1000 WITH VALUES

Interogarea de mai sus va adăuga o coloană “nullable” în tabelul serverului sql cu valoarea implicită pentru înregistrările existente.

În acest tutorial am învățat să adăugăm o coloană atât coloane care nu pot fi anulate, cât și coloane care nu pot fi anulate, în tabelul serverului sql cu o valoare implicită pentru toate înregistrările existente.