SQL Server NULL kolonu NOT NULL Nasıl Yaparız ?

Veritabanlarımızda tablolarımız içerisinde yer alan Nullable kolonlarımızı Not Null a nasıl çeviririz bu makalemizde bunu göreceğiz.

Örnek ile konuyu daha net bir şekilde ele alalım. SQLTURKIYE veritabanımız içerisinde bir adet demo tablo oluşturuyoruz.

USE SQLTURKIYE
GO
-- Demo tablomuzu oluşturalım ...
CREATE TABLE SQLTR_DEMO_1 (
	Id INT
   ,TestColumn VARCHAR(50)
)

SQLTR_DEMO_1 isimli demo tablomuzu oluşturduktan sonra içerisine veri basıyoruz.

--Demo tablomuza data basıyoruz ...
INSERT INTO SQLTR_DEMO_1 (Id, TestColumn)
	SELECT
		NULL
	   ,NULL
	UNION ALL
	SELECT
		1
	   ,NULL
	UNION ALL
	SELECT
		NULL
	   ,'sqlturkiye.com'
GO

Şimdi ise tablomuzu kontrol edelim ,

-- Tablomuzda ki datayı kontrol ediyoruz ...
SELECT
	*
FROM SQLTR_DEMO_1 sd

Demo tablomuzda yer alan Id ve TestColumn kolonlarını NOT NULL yapacağız. Bunun için aşağıda ki scripti çalıştırıyoruz.

-- Demo tablomuzda yer alan ID ve TestColumn kolonlarımızı NOT NULL a çekelim ...

ALTER TABLE SQLTR_DEMO_1
ALTER COLUMN Id INT NOT NULL;
ALTER TABLE SQLTR_DEMO_1
ALTER COLUMN TestColumn INT NOT NULL;
GO

Script çalıştırdığımızda aşağıda ki hata ile karşılaşıyoruz.

 

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

Hatadan da anlaşılacağı üzere NOT NULL a çekmek istediğimiz kolonlar içerisinde NULL kayıt olduğundan hata almaktayız. O zaman yapmamız gereken NULL kayıtlarımızı tablomuzdan kaldırmak.Bunu içinde ID kolonumuzda yer alan NULL değerleri 0 , TestColumn kolonunda yer alan NULL kayıtları ise boşluk olarak güncelleyip tekrar bu işlemlerden sonra kolonlarımızı NOT NULL a çekmeye çalışalım.

-- ID kolonumuzdaki NULL kayıtları 0 ,TestColumn daki NULL kayıtları boş yapıyoruz ...
UPDATE SQLTR_DEMO_1
SET ID = 0
   ,TestColumn = ''
GO

Şimdi ise tablomuzu kontrol edelim,

-- Tablomuzda ki datayı kontrol ediyoruz ...
SELECT
	*
FROM SQLTR_DEMO_1 sd

Artık tablomuzda NULL kayıt olmadığını görmekteyiz. Şimdi kolonlarımızı NOT NULL a çekeceğimiz scripti EXEC edelim.

-- Demo tablomuzda yer alan ID ve TestColumn kolonlarımızı NOT NULL a çekelim ...

ALTER TABLE SQLTR_DEMO_1
ALTER COLUMN Id INT NOT NULL;
ALTER TABLE SQLTR_DEMO_1
ALTER COLUMN TestColumn INT NOT NULL;
GO

İşlemden sonra Table Design dan tablomuzu kontrol ettiğimizde NOT NULL operasyonunun başarılı olduğunu görmekteyiz.

Büyük tablolarınızda bu işlemleri ilk önce test ve stage ortamlarınızda gerçekleştirip süreçleri ve sürelerini analiz edip daha sonra live ortamlarınız da uygun zaman diliminde gerçekleştirin.

Kolay Gelsin.

2 Replies to “SQL Server NULL kolonu NOT NULL Nasıl Yaparız ?”

  1. Geçenlerde yapmaya çalıştığım ama beceremedim onlarca forum u okuduğumda oradaki bilgilerle anlamdn yaptığım bir işlemdi. Yazdığınız bu makale ile işin tüm adımlarını idrak etmiş oldum.

    Elinize Sağlık

    1. Selam Merve ,

      İhtiyacını görmesine sevindim. Bu tarz işlemlerinizi ilk etapta DEV ve Stage ortamlarınızda yapıp sürelerini burada gözlemleyip daha sonra live ortamlarınızda yapmanızı tavsiye ederim.

      Yoğun bir tabloda yapacak iseniz de sistemin en az yoğun olduğu dönemleri kullanmalısınız.

      Kolay Gelsin.

Leave a Reply

Your email address will not be published. Required fields are marked *