Hogyan adjunk hozzá egy oszlopot alapértelmezett értékkel egy meglévő táblához az SQL Serverben

Az SQL szerverben egy alapértelmezett értékű oszlop hozzáadásához egy meglévő táblához használja a ALTER táblázat ADD oszlopnevet NULL/NOT NULL korlátozással DEFAULT értékkel.

Az alábbi sql server lekérdezési szintaxis használható egy alapértelmezett értékkel rendelkező oszlop hozzáadásához a meglévő táblához.

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

Nézzünk végig egy példát, hogy jobban megértsük.

Nem nullázható oszlop hozzáadása alapértelmezett értékkel a meglévő rekordokhoz

Tekintsünk egy Employee táblát az SQL szerveren, és ha a minimálbér oszlopot alapértelmezett értékkel szeretnénk hozzáadni 1000USD, akkor az alábbi lekérdezést használjuk.

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

A fenti lekérdezés egy új MINIMUM_WAGE oszlopot ad hozzá a Employee táblához, és a meglévő sorokban lévő oszlopot az alapértelmezett értékkel, azaz 1000-vel tölti fel.

Mivel hozzáadtuk a NOT NULL korlátozást.

Ha nem adunk hozzá NOT NULL korlátozást, akkor az összes meglévő sor NULL lesz, és a megadott DEFAULT értéknek nem lesz hatása.

ALTER TABLE Employee
ADD MINIMUM_WAGE int DEFAULT(1000)
GO

Az összes MINIMUM_WAGE oszlop értéke NULL lesz.

A DEFAULT értéket akkor kell hozzáadni, ha a NOT NULL megszorítást adja hozzá, ha a táblázat nem üres.

Például ha a Employee tábla nem üres, és ha új oszlopot ad hozzá a NOT NULL korlátozással, hibát fog dobni.

ALTER TABLE Employee
ADD MINIMUM_WAGE int NOT NULL
GO

A fenti sql szerver lekérdezés az alábbi hibát dobja ki, miközben új oszlopot ad hozzá a meglévő táblához.

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.

Ha a Employee tábla üres.

A fenti sql szerver lekérdezés minden probléma nélkül hozzáad egy új oszlopot.

Nullázható oszlop hozzáadása alapértelmezett értékkel a meglévő rekordokhoz

Ha nullázható oszlopot szeretne hozzáadni alapértelmezett értékkel a meglévő rekordokhoz, akkor a WITH VALUES címet kell használnia az sql utasításban.

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

A fenti lekérdezés egy nullázható oszlopot ad hozzá az sql szerver táblához a meglévő rekordok alapértelmezett értékével.

Ha ez a bemutató megtanultuk, hogy mind nullázható, mind nem nullázható oszlopot adjunk hozzá az sql szerver táblához alapértelmezett értékkel az összes meglévő rekordhoz.