SQL Server'da mevcut bir tabloya varsayılan değere sahip bir sütun nasıl eklenir

SQL server’da, mevcut bir tabloya varsayılan değere sahip bir sütun eklemek için ALTER Tablo ADD sütun adı ile NULL/NOT NULL kısıtlamasını ve DEFAULT değerini kullanın.

Mevcut tabloya varsayılan değere sahip bir sütun eklemek için aşağıdaki sql server sorgu sözdizimi kullanılabilir.

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

Bunu daha iyi anlamak için bir örnek üzerinden gidelim.

Mevcut kayıtlar için varsayılan değere sahip Nullable olmayan bir sütun ekleme

SQL server’da bir Employee tablosu düşünün ve varsayılan değeri 1000USD olan asgari ücret sütunu eklemek istiyorsak aşağıdaki sorguyu kullanın.

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

Yukarıdaki sorgu Employee tablosuna yeni bir MINIMUM_WAGE sütunu ekleyecek ve mevcut satırlardaki sütunu varsayılan değerle, yani 1000 ile dolduracaktır.

Çünkü NOT NULL kısıtlamasını ekledik.

NOT NULL kısıtlamasını eklemezseniz, mevcut tüm satırlar NULL olacaktır ve sağlanan DEFAULT değerinin hiçbir etkisi olmayacaktır.

ALTER TABLE Employee
ADD MINIMUM_WAGE int DEFAULT(1000)
GO

Tüm MINIMUM_WAGE sütun değerleri NULL olacaktır.

Tablo boş değilse NOT NULL kısıtını eklerseniz DEFAULT değerini eklemeniz gerekir.

Örneğin, Employee tablosu boş değilse ve NOT NULL kısıtlaması ile yeni bir sütun eklerseniz hata verir.

ALTER TABLE Employee
ADD MINIMUM_WAGE int NOT NULL
GO

Yukarıdaki sql server sorgusu, mevcut tabloya yeni sütun eklerken aşağıdaki hatayı verecektir.

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.

Employee tablosu boşsa.

Yukarıdaki sql server sorgusu herhangi bir sorun olmadan yeni bir sütun ekleyecektir.

Mevcut kayıtlar için varsayılan değere sahip Nullable sütun ekleme

Mevcut kayıtlar için varsayılan değere sahip nullable bir sütun eklemek istiyorsanız, sql deyiminde WITH VALUES adresini kullanmanız gerekir.

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

Yukarıdaki sorgu, sql server tablosuna mevcut kayıtlar için varsayılan değere sahip nullable bir sütun ekleyecektir.

Bu eğitimde sql server tablosuna hem nullable hem de nullable olmayan sütunları mevcut tüm kayıtlar için varsayılan değerle eklemeyi öğrendik.