Microsoft SQL Server'daki BENZERSİZ Kısıtlamalara Yönelik Bir Kılavuz

BENZERSİZ yaratarak kısıtlama, SQL Server yöneticileri, bir veritabanı sütununun yinelenen değerler içermeyebileceğini belirtir. Yeni bir BENZERSİZ oluşturduğunuzda kısıtlama, SQL Server, yinelenen değerler içerip içermediğini belirlemek için söz konusu sütunu kontrol eder. Eğer masa kopyalar içeriyorsa, kısıtlama oluşturma komutu başarısız olur. Benzer şekilde, bir sütunda BENZERSİZ bir kısıtlama tanımladıktan sonra, yinelemelerin var olmasına neden olacak verileri ekleme veya değiştirme girişimleri de başarısız olur.

Siyah bir arka plan üzerinde SQL kodu.
KIVILÇIM PINAR / Getty Images

BENZERSİZ Kısıtlamaları Neden Kullanmalı?

UNIQUE kısıtlaması ve birincil anahtarın her ikisi de benzersizliği zorunlu kılar, ancak UNIQUE kısıtlamasının daha iyi bir seçim olduğu zamanlar vardır.

  • Bir tabloya çeşitli kısıtlamalar belirtmek için UNIQUE kısıtlaması kullanın. Bir tabloya yalnızca bir birincil anahtar ekleyebilirsiniz.
  • Bir sütun boş değerlere izin verdiğinde UNIQUE kısıtlaması kullanın. Birincil anahtar kısıtlamaları yalnızca boş değerlere izin vermeyen sütunlara eklenebilir.
instagram viewer

BENZERSİZ bir Kısıtlama Oluşturma

Transact-SQL'de benzersiz bir kısıtlama oluşturmanın en kolay yolu, SQL Management Studio'da Object Explorer'da bir Veritabanı Motoruna bağlanmak ve ardından Yeni Sorgu.

Yeni bir tablo oluşturmak ve bir sütuna kısıtlama eklemek için terimleri gerektiği gibi değiştirerek aşağıdaki sorguyu kullanın:

AdventureWorks2012'yi KULLANIN; 
GİT
TABLO OLUŞTURMA Üretimi. TransactionHistoryArşiv4
(
İşlem Kimliği int NULL DEĞİL,
KISITLAMA AK_TransactionID BENZERSİZ(İşlemKimliği)
);
GİT.

Sorguyu yürütün.

Benzer şekilde, mevcut bir tabloda benzersiz bir kısıtlama oluşturmak için aşağıdaki T-SQL sorgusunu yürütün:

AdventureWorks2012'yi KULLANIN; 
GİT
ALTER TABLO Kişi. Parola
KISIT EKLE AK_Password UNIQUE (PasswordHash, PasswordSalt);
GİT.

BENZERSİZ Kısıtlamalar vs. BENZERSİZ Dizinler

UNIQUE kısıtlaması ile UNIQUE indeksi arasındaki fark hakkında biraz kafa karışıklığı oldu. Bunları oluşturmak için farklı T-SQL komutları kullanabilseniz de (kısıtlamalar için ALTER TABLE ve ADD CONSTRAINT ve dizinler için CREATE UNIQUE INDEX), çoğunlukla aynı etkiye sahiptirler. Aslında, bir UNIQUE kısıtlaması oluşturduğunuzda, aslında tablo üzerinde bir UNIQUE indeksi oluşturur. Yine de birkaç farklılığa dikkat edin:

  • Bir dizin oluşturduğunuzda, oluşturma komutuna ek seçenekler ekleyebilirsiniz.
  • UNIQUE kısıtlamasına tabi bir sütun, bir yabancı anahtar.
instagram story viewer