SQL Server’da Null Alanların Not Null Yapılması

Herkese merhaba,

Bu yazıda size SQL Server’da bir tablo içindeki Null alanların nasıl Not Null yapılacağından bahsedeceğim. Örnek işlem için aşağıdaki kodları inceleyelim.

--Tablo oluşturulması

CREATE TABLE Sutunlar (
IDDegeri INT IDENTITY(1,1) PRIMARY KEY,
Kelime1 NVARCHAR(100),
Kelime2 NVARCHAR(100)
)

--Veri eklenmesi

INSERT INTO dbo.Sutunlar
        ( Kelime1, Kelime2 )
VALUES  ( N'Halı',
          N'Saha'  
          ),
		  (
		  N'Kazma',
		  N'Kürek'		  
		  ),
		  (
		  N'Düğün',
		  N'Dernek'
		  )

--Veri listelenmesi

SELECT * FROM Sutunlar

--Default Constraint Değer ataması yapıyoruz (Kelime1 alanına)

ALTER TABLE dbo.Sutunlar
ADD CONSTRAINT DK_Kelime1 DEFAULT 'DefaultDeger' FOR Kelime1

--1 ve 3 numaralı ID değerleri NULL olarak update ediliyor.

UPDATE dbo.Sutunlar SET Kelime1= NULL WHERE IDDegeri IN (1,3)

--Veri listelenmesi

SELECT * FROM Sutunlar

--Null olan alanların DefaultDeger olarak update edilmesi. Edilmezse Not Null yapamayız

UPDATE dbo.Sutunlar 
SET Kelime1 = 'DefaultDeger'
WHERE Kelime1 IS NULL

--Kelime1 alanının Not null yapılması

ALTER TABLE Sutunlar
ALTER COLUMN Kelime1 nvarchar(100) NOT NULL

--Veri listelenmesi

SELECT * FROM Sutunlar

Burada bir tablo oluşturduk, içine 3 değer insert ettik. Sonrasında Kelime1 değerine DefaultDeger adında default constraint  atama işlemi yaptık. 1 ve 3 IDDegeri’ne sahip alanların Kelime1 değerleri Null olarak update edildi. Bu işlem sonrasında Kelime1 alanını Not Null yapmak istediğimizde bize bir hata verecektir. Kelime1 alanını Not Null yapmak için, Null olan kısımlar default constrait’de belirtilen DefaultDeger olarak güncellenirse, Not Null yapmamıza izin verecektir. Aksi durumda aşağıdaki hatayı alırsınız.

Msg 515, Level 16, State 2, Line 50
Cannot insert the value NULL into column 'Kelime1', table 'test.dbo.Sutunlar'; column does not allow nulls. UPDATE fails.
The statement has been terminated.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

943 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!