Share via


Benzersiz dizinler oluşturma

Benzersiz dizin, yinelenen anahtar değerleri için herhangi bir girişim başarısız garanti oluşturuluyor.BENZERSİZ kısıtlama oluşturma ve bağımsız bir kısıtlama benzersiz dizin oluşturma arasında önemli bir fark yoktur.Aynı şekilde, veri doğrulama oluşur ve sorgu iyileştiricisi tarafından bir kısıtlaması oluşturulur veya el ile oluşturulan benzersiz dizin arasında ayırt etmek.Bununla birlikte, veri bütünlük amaç olduğunda sütun benzersiz bir kısıtlama oluşturmanız gerekir.Bu dizinin Temizle'yi amaç yapar.

Tipik uygulamaları

Benzersiz dizinler, aşağıdaki yollarla uygulanır:

  • BİRİNCİL anahtar veya benzersiz kısıtlama

    PRIMARY key kısıtlaması oluşturduğunuzda, benzersiz kümelenmiş dizin sütun veya sütunlar üzerinde tablo kümelenmiş bir dizin zaten var olmayan ve benzersiz bir kümelenmemiş dizin belirtmezseniz, otomatik olarak oluşturulur.Birincil anahtar sütun null değerlere izin veremez.

    BENZERSİZ kısıtlama oluşturduğunuzda, benzersiz bir kümelenmemiş dizin benzersiz kısıtlamayı zorlamak için varsayılan olarak oluşturulur.Kümelenmiş bir dizin tablo üzerinde henüz yoksa, benzersiz kümelenmiş dizin belirtebilirsiniz.

    Daha fazla bilgi için bkz: BİRİNCİL anahtar sınırlamaları ve UNIQUE Kısıtları.

  • Dizin bağımsız olarak bir sınırlama

    Birden çok benzersiz kümelenmemiş dizinler üzerinde tanımlı bir tablo.

    Daha fazla bilgi için bkz: CREATE INDEX (Transact-SQL).

  • Dizin oluşturulmuş görünüm

    dizinli görünüm oluşturmak için benzersiz kümelenmiş dizin üzerinde bir veya daha çok görünümü sütunları tanımlanır.Görüntüleyin (materialized) ve sonuç küme depolanır yaprak düzey aynı şekilde dizin tablo verileri kümelenmiş dizinde depolanır.Daha fazla bilgi için bkz: Dizin oluşturulmuş görünümler oluşturma.

Yinelenen değer sorunlarını çözme

Anahtar sütunlar yinelenen değerler varsa, bir benzersiz dizin veya kısıtlama oluşturulamaz.Sütunlarda bileşik benzersiz bir dizin oluşturmak isterseniz, örneğin, ad ve Soyadı, vardır ancak iki satır tablo değerleri içeren **'Gamze'**ve 'Etikan' , FirstName ve Soyadısütunlar benzersiz dizin oluşturulamıyor.Sorun aşağıdaki yollardan biriyle çözülebilir:

  • Sütun ekleyin veya benzersiz bir bileşik oluşturmak için dizini tanımındaki kaldırın.Önceki örnekte ekleyerek bir MiddleName sütun dizin tanımı için çoğaltma sorunu çözmek.

  • Yinelenen değerler veri girişi sırasında oluşan hataları sonucu, verileri el ile düzeltmek ve dizin veya kısıtlama oluşturun.

Tanıtıcı yinelenen değerleri IGNORE_DUP_KEY seçeneğini kullanma

Oluşturduğunuzda veya bir benzersiz dizin veya kısıtlamayı değiştirmek için küme IGNORE_DUP_KEY seçeneğini on ya da off.Bu seçenek, yinelenen anahtar değerleri benzersiz dizin eklemek INSERT işlemi çalıştığında hata yanıtını belirtir.IGNORE_DUP_KEY seçeneği dizin oluşturulduğunda veya yeniden sonra işlemleri yalnızca eklemek için geçerlidir.Hayır seçeneği vardır ne zaman tümden create INDEX, alter INDEX, veya güncelleştirme yürütülür.Varsayılan kapalı'dır.

  • ON
    Yinelenen anahtar değerleri benzersiz dizin eklendiğinde uyarı iletisi oluşacaktır.Yalnızca benzersiz kısıtlamayı ihlal satırları başarısız olur.

  • KAPALI
    Hata iletisi, yinelenen anahtar değerleri benzersiz dizin eklendiğinde ortaya çıkar.Tüm ekleme işlemini geri alınır.

Örneğin, bir tablo benzersiz dizin ile 20 satır tek bir deyim ekler ve bu satırların 10 yinelenen anahtar değerleri içeren varsayılan olarak tüm 20 satır reddedilir.Ancak, dizin seçeneği IGNORE_DUP_KEY on olarak ayarlanmışsa, yalnızca 10 yinelenen anahtar değerleri reddedilir; diğer 10 yinelenmeyen anahtar değerleri içine eklenen tablo.

IGNORE_DUP_KEY on bir görünüm oluşturulmuş dizinleri, benzersiz olmayan dizinler, xml dizinler, kayma dizinleri ve filtre uygulanmış dizinler olamaz.

IGNORE_DUP_KEY görüntülemek için sys.indexes.

Geriye dönük uyumlu sözdiziminde ile IGNORE_DUP_KEY IGNORE_DUP_KEY ile için eşdeğerdir = on.

null değerleri işleme

Dizin oluşturma amaçları için null değerleri eşit olarak karşılaştırın.Bu nedenle, birden fazla satırda anahtar değerleri null ise bir benzersiz dizin veya benzersiz kısıtlama oluşturamazsınız.Benzersiz kısıtlama veya benzersiz dizin sütun seçtiğinizde tanımlanan select null sütunlarını gibi değil.

Disk alanı gereksinimleri

Benzersiz dizinler için disk alanı gereksinimleri belirleme işlemi, kümelenmiş ve kümelenmemiş dizinleri aynıdır.Dizinler için disk alanı gereksinimleri hakkında daha fazla bilgi için bkz: Dizin Disk alanı gereksinimleri belirleme.

Bir tablo oluşturduğunuzda, dizin oluşturmak için

CREATE TABLE (Transact-SQL)

Varolan üzerinde bir dizin oluşturmak içintablo

CREATE INDEX (Transact-SQL)