MS-SQL’de oluşturmuş olduğumuz tablolar içinde yer alan her bir kolonda eşsiz şekilde, yani benzersiz birbirinden farklı veriler bulunmasını isteyebiliriz. Bunun için UNIQUE deyimini kullanırız. Aynı Primary Key mantığı gibidir ama primary keyden tek farklı unique kolonlar null veriler de içerebilir. Primary Key kolonlarda mutlaka veri olmalıdır. Tek bir kolona UNIQUE kısıtlaması verilebildiği gibi, birden fazla kolona da UNIQUE kısıtlaması verebiliriz. Ayrıca tablolarımızı oluştururken UNIQUE kısıtlaması yapabildiğimiz gibi, daha sonradan var olan tablolar üzerinde de UNIQUE kısıtlaması yapabiliriz. Aşağıda örnek syntaxları veriyorum.
Yeni bir tablo oluşturulması esnasında tek bir kolona (her biri ayrı kolon) UNIQUE constraint ekleme:
CREATE TABLE
Burada farklı şekilde birbirinden bağımsız olarak kolon1 ve kolon2’ye UNIQUE constraint ekliyoruz. Burada herhangi bir constraint adı vermeden syntax verdim, bu gibi bir durumda SQL Server kendisi bir ad atamaktadır.
Yeni bir tablo oluşturulması esnasında birden fazla kolona kombine (aynı kısıtlama) UNIQUE constraint ekleme:
CREATE TABLE
CONSTRAINT
ALTER ile birlikte kullanımı:
CREATE TABLE
ALTER TABLE ADD CONSTRAINT
Birde kombine UNIQUE tanımlayalım.
Mevcut tabloyu siliyorum.
DROP TABLE tablo1
Kombine bir UNIQUE olacak şekilde yine tablo oluşturuyorum.
CREATE TABLE tablo1 (Ad VARCHAR(20), Soyad VARCHAR(20) CONSTRAINT Kontrol UNIQUE (Ad, Soyad));
Tablomuz oluşturuldu. Şimdi veri girişi yapıyorum.
INSERT INTO tablo1 VALUES('ismail','gürsoy');
Verimi kaydettim. Alttaki gibi bir veri giriyorum.
INSERT INTO tablo1 VALUES('ismail','hakkı');
Bunda da problem yok. Bir de soyad aynı olan veri girelim.
INSERT INTO tablo1 VALUES('hasan','gürsoy');
Bu veri de kaydedilir. Peki yine ad kolonuna ismail soyad kolonuna gürsoy verisi girelim.
INSERT INTO tablo1 VALUES('ismail','gürsoy');
Bu sefer hata alırım, çünkü her iki kolonu da kontrol ediyorum ve aynı şekilde girilmiş bir veri daha önceden mevcut dolayısı ile kayıt gerçekleşmez. Yani kombine UNIQUE ile birden fazla kolon üzerinde kontrol gerçekleştirebiliyorum. Son durum aşağıdaki gibi.
SELECT * FROM tablo1;
1 Yorum
Pingback: UNIQUE Constraint Kullanımı | Yılmaz KÖKSAL Blog