SQL Server’da NULL Kolonları NOT NULL Yapmak

Herkese merhaba,

Bu yazıda SQL Server’da NULL kolonları NOT NULL yapmak ile ilgili bilgi vermeye çalışacağım.

SQL Server’da bazı durumlarda geçerli kolonda NULL değer olmamasını isteyebiliriz.

Diyelim ilk başta NULL olsun diye bıraktığınız bir kolon var. Bu kolon NOT NULL olsun dediniz ve işlem yaptınız. Bazı hatalar alabilirsiniz. Aşağıdaki örnekte bu hatanın nasıl giderilebileceğinden bahsedeceğim.

--Tablonun oluşturulması

CREATE TABLE NullTablosu
(
     Id INT NOT NULL
    ,Degerler INT NULL
)

--Tabloya veri eklenmesi

 
INSERT INTO NullTablosu VALUES (1,NULL) ,(2,20),(3,30) , (4,NULL)

--Tablonun kontrol edilmesi

 
SELECT * FROM NullTablosu

NullTablosu diye bir tablo oluşturduk ve içerisine yukarıdaki verileri ekledik.

Şimdi bu tablo üzerinde NULL kolonları NOT NULL yapalım.

ALTER TABLE NullTablosu 
    ALTER COLUMN Vals INT NOT NULL

Yukarıdaki kodu çalıştırdığınızda aşağıdakine benzer bir hata alacaksınız.

SQL Server'da NULL Kolonları NOT NULL Yapmak

Msg 515, Level 16, State 2, Line 21
Cannot insert the value NULL into column ‘Degerler’, table ‘TestIslemleri.dbo.NullTablosu’; column does not allow nulls. UPDATE fails.
The statement has been terminated.

gibi bir hata almış olmalısınız.

Burada önce NULL değerlerini başka bir değere güncellememiz gerekiyor. Ardından NULL kolonları NOT NULL yapabiliriz.

UPDATE x
SET x.Degerler = -1 
FROM NullTablosu x 
WHERE x.Degerler IS NULL

 
ALTER TABLE NullTablosu 
    ALTER COLUMN Degerler INT NOT NULL

SELECT * FROM NullTablosu

SQL Server'da NULL Kolonları NOT NULL Yapmak

Görüldüğü üzere NULL kolonlar NOT NULL yapılmış oldu yani kolon güncellemesini yapmış olduk.

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

1.181 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!