Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Bu konu başlığında, SQL Server Management Studio veya Transact-SQL kullanarak SQL Server'daki bir tabloda benzersiz bir dizinin nasıl oluşturulacağı açıklanmaktadır. Benzersiz dizin, dizin anahtarının yinelenen değer içermediğini ve bu nedenle tablodaki her satırın bir şekilde benzersiz olduğunu garanti eder. Benzersiz bir kısıtlama oluşturma ile kısıtlamadan bağımsız benzersiz bir dizin oluşturma arasında önemli bir fark yoktur. Veri doğrulama aynı şekilde gerçekleşir ve sorgu iyileştiricisi bir kısıtlama tarafından oluşturulan veya el ile oluşturulan benzersiz bir dizin arasında ayrım yapmaz. Ancak, sütunda benzersiz bir kısıtlama oluşturmak, dizinin amacını netleştirir. Benzersiz kısıtlamalar hakkında daha fazla bilgi için bkz. Benzersiz Kısıtlamalar ve Denetleme Kısıtlamaları.
Benzersiz bir dizin oluşturduğunuzda, yinelenen anahtarları yoksaymak için bir seçenek ayarlayabilirsiniz. Bu seçenek Evet olarak ayarlanırsa ve birden çok satırı etkileyen veriler ekleyerek (INSERT deyimiyle) yinelenen anahtarlar oluşturmaya çalışırsanız, yineleme içeren satır eklenmez. Hayır olarak ayarlanırsa, ekleme işleminin tamamı başarısız olur ve tüm veriler geri alınır.
Note
Bu sütun birden fazla satırda NULL içeriyorsa, tek bir sütunda benzersiz dizin oluşturamazsınız. Benzer şekilde, sütun birleşimi birden çok satırda NULL içeriyorsa, birden çok sütunda benzersiz dizin oluşturamazsınız. Bunlar dizin oluşturma amacıyla yinelenen değerler olarak değerlendirilir.
Bu Konuda
Başlamadan önce:
Aşağıdakini kullanarak tabloda benzersiz bir dizin oluşturmak için:
Başlamadan Önce
Benzersiz Dizinin Avantajları
Çok sütunlu benzersiz dizinler, dizin anahtarındaki her değer bileşiminin benzersiz olduğunu garanti eder. Örneğin, LastName, FirstName ve MiddleName sütunlarının birleşiminde benzersiz bir dizin oluşturulursa, tablodaki iki satır bu sütunlar için aynı değer bileşimine sahip olamaz.
Her sütundaki verilerin benzersiz olması koşuluyla, aynı tabloda hem benzersiz bir kümelenmiş dizin hem de birden çok benzersiz kümelenmemiş dizin oluşturabilirsiniz.
Benzersiz dizinler, tanımlanan sütunların veri bütünlüğünü sağlar.
Benzersiz dizinler, sorgu iyileştiricisi için daha verimli yürütme planları üretebilecek ek bilgiler sağlar.
Tipik Uygulamalar
Benzersiz dizinler aşağıdaki yollarla uygulanır:
birincil anahtar veya benzersiz kısıtlama
Birincil Anahtar kısıtlaması oluşturduğunuzda, tablodaki kümelenmiş bir dizin yoksa ve benzersiz bir kümelenmemiş dizin belirtmezseniz, kolon veya kolonlar üzerinde benzersiz bir kümelenmiş dizin otomatik olarak oluşturulur. Birincil anahtar sütunu NULL değerlere izin veremez.
Benzersiz bir kısıtlama oluşturduğunuzda, benzersiz bir kısıtlamayı zorlamak için varsayılan olarak benzersiz bir kümelenmemiş dizin oluşturulur. Tabloda kümelenmiş bir dizin yoksa benzersiz bir kümelenmiş dizin belirtebilirsiniz.
Daha fazla bilgi için bkz. Benzersiz Kısıtlamalar ve Denetim Kısıtlamaları ile Birincil ve Yabancı Anahtar Kısıtlamaları.
Kısıtlamadan bağımsız dizin
Bir tabloda birden çok benzersiz kümelenmemiş dizin tanımlanabilir.
Dizinli görünüm
Dizinli görünüm oluşturmak için, bir veya daha fazla görünüm sütunu üzerinde benzersiz bir kümelenmiş dizin tanımlanır. Görünüm yürütülür ve sonuç kümesi, tablo verilerinin kümelenmiş dizinde depolandığı şekilde dizinin yaprak düzeyinde depolanır. Daha fazla bilgi için bkz. Dizinli Görünümler Oluşturma.
Sınırlamalar ve Kısıtlamalar
Verilerde yinelenen anahtar değerleri varsa benzersiz dizin, BENZERSİZ kısıtlaması veya BİRİNCİL ANAHTAR kısıtlaması oluşturulamaz.
Benzersiz bir kümelenmemiş dizin, dahil edilen anahtar olmayan sütunlar içerebilir. Daha fazla bilgi için bkz. Eklenen sütunlarla dizin oluşturma.
Security
Permissions
ALTER izni, tablo veya görünüm üzerinde gereklidir. Kullanıcının sysadmin sabit sunucu rolünün veya db_ddladmin ve db_owner sabit veritabanı rollerinin üyesi olması gerekir.
SQL Server Management Studio'yu kullanma
Tablo Tasarımcısı'nı kullanarak benzersiz bir dizin oluşturmak için
Nesne Gezgini'nde, benzersiz bir dizin oluşturmak istediğiniz tabloyu içeren veritabanını genişletin.
Tablolar klasörünü genişletin.
Benzersiz bir dizin oluşturmak istediğiniz tabloya sağ tıklayın ve Tasarım'ı seçin.
Tablo Tasarımcısı menüsünde Dizinler/Anahtarlarseçin.
Dizinler/Anahtarlar iletişim kutusunda Ekle'ye tıklayın.
Seçili Birincil/Benzersiz Anahtar veya Dizin metin kutusunda yeni dizini seçin.
Ana kılavuzdaki (Genel) altında Tür'e tıklayın ve ardından listeden Dizin'i seçin.
Sütunlar'ı seçin ve üç nokta (...) üzerine tıklayın.
Dizin Sütunları iletişim kutusundaki Sütun Adı'nın altında, dizine eklemek istediğiniz sütunları seçin. En fazla 16 sütun seçebilirsiniz. En iyi performans için dizin başına yalnızca bir veya iki sütun seçin. Seçtiğiniz her sütun için, dizinin bu sütunun değerlerini artan veya azalan düzende düzenleyip düzenlemediğini belirtin.
Dizine ilişkin tüm sütunlar seçildiğinde Tamam'a tıklayın.
Kılavuzdaki (Genel) altında Benzersizdir'i ve ardından listeden Evet'i seçin.
İsteğe bağlı: Ana kılavuzdaki Tablo Tasarımcısı'nın altında Yinelenen Anahtarları Yoksay'ı ve ardından listeden Evet'i seçin. Benzersiz dizinde mükerrer anahtar oluşturan veya verileri ekleme girişimlerini görmezden gelmek istiyorsanız bunu yapın.
Kapat'a tıklayın.
Dosya menüsünde Table_name Kaydet'e tıklayın.
Nesne Gezgini'yi kullanarak benzersiz dizin oluşturma
Nesne Gezgini'nde, benzersiz bir dizin oluşturmak istediğiniz tabloyu içeren veritabanını genişletin.
Tablolar klasörünü genişletin.
Benzersiz dizin oluşturmak istediğiniz tabloyu genişletin.
Dizinler klasörüne sağ tıklayın, Yeni Dizin'in üzerine gelin ve Kümelenmemiş Dizin... öğesini seçin.
Yeni Dizin iletişim kutusundaki Genel sayfasında, Dizin adı kutusuna yeni dizinin adını girin.
Benzersiz onay kutusunu seçin.
Dizin anahtarı sütunları'nın altında Ekle...'ye tıklayın.
table_nameSütun Seç iletişim kutusunda, benzersiz dizine eklenecek tablo sütununun veya sütunlarının onay kutusunu veya onay kutularını seçin.
Tamam'a tıklayın.
Yeni Dizin iletişim kutusunda Tamam'a tıklayın.
Transact-SQL Kullanımı
Tabloda benzersiz bir dizin oluşturmak için
Nesne Gezgini'nde Veritabanı Motoru'nun bir örneğine bağlanın.
Standart çubuğunda Yeni Sorgubutonuna tıklayın.
Aşağıdaki örneği kopyalayıp sorgu penceresine yapıştırın ve Yürüt'e tıklayın.
USE AdventureWorks2022; GO -- Find an existing index named AK_UnitMeasure_Name -- on the Production.UnitMeasure table and delete it if found. IF EXISTS (SELECT name from sys.indexes WHERE name = N'AK_UnitMeasure_Name' AND object_id = OBJECT_ID(N'Production.UnitMeasure', N'U')) DROP INDEX AK_UnitMeasure_Name ON Production.UnitMeasure; GO -- Create a unique index called AK_UnitMeasure_Name -- on the Production.UnitMeasure table using the Name column. CREATE UNIQUE INDEX AK_UnitMeasure_Name ON Production.UnitMeasure (Name); GO