Bu baş aşağı gümüş anahtar simgesi nedir


11

Üzerinde raporlar ve gösterge tabloları oluşturabilmek için SQL Server 2005 3. taraf sunucusunu ve veritabanını devralmıştım.

Bir masada yeni bir simge buldum: diğer birincil ve yabancı anahtarlarımın yanında mavi-gümüş baş aşağı bir anahtar.

Sağ tıkladığımda, bağlam menüsü bana "Komut Dosyası Kısıtlaması" seçeneğini sunar, ancak "Değiştirmeye" çalıştığımda, sütun tasarım formunu (birincil anahtarlar gibi) açar ve yine de, "Dizinler" bölümü, kısıtlamalar değil.

Birisi ne denir ve ne için kullanıldığını biliyor mu?

Baş aşağı tuşu

Yanıtlar:


12

Benzersiz bir kısıtlama anlamına geliyor. SQL Server'da, benzersiz bir kısıtlama aslında kapakların altında bir dizin olarak uygulanır; bu yüzden Indexesdüğümün altında da görünür (neden Constraintsdüğümün altında en azından listelenmediği veya neden sadece farklı bir renk yerine baş aşağı bir tuş seçtiklerine dair iyi bir açıklama yapamıyorum ).

Bunun aslında bir dizin olarak uygulandığını doğrulamak için burada bir sonuç görmelisiniz:

SELECT index_id, type_desc, is_unique_constraint
  FROM sys.indexes
  WHERE name = N'IX_tblCustIndex';

Sen "Senaryo Kısıtlaması As ..." gördüğünü söyledin - eğer bunu takip etseydin sana şöyle bir senaryo sağlardı:

ALTER TABLE [dbo].[tblCustIndex] ADD UNIQUE NONCLUSTERED 
(
  [some_column] ASC
) WITH (...a bunch of default options...)

Ancak çalıştırmayın çünkü bu sözdizimi bir ad kullanmaz ve sadece ikinci, gereksiz benzersiz bir kısıtlama oluşturur ...

İşte çok basit bir repro ve 2014'te çok temel sözdiziminde bile baş aşağı anahtarı aldığımın kanıtı:

CREATE TABLE dbo.foo(id INT UNIQUE);

resim açıklamasını buraya girin Büyütmek için tıklayın

Artık, açıkça benzersiz bir dizin oluşturursanız farklı bir simge elde edebilirsiniz (ve göreceğiniz tek farkın sys.indexesadı ve değeri vardır is_unique_constraint):

resim açıklamasını buraya girin Büyütmek için tıklayın

Diğer farklılıklar için bu Yığın Taşması cevabına bakınız .


1
SQL2005'e özgü mü? Çünkü BENZERSİZ bir dizin eklemeye çalıştığımda, farklı bir simge (bir tür ters çevrilmiş ağaç) alıyorum. Ve bir Kısıtlama eklediğimde, bir tür köşeli parantez simgesi alıyorum. Bu simgeyi yeniden üretemiyorum.
Philippe

@Philippe Cevap güncellendi.
Aaron Bertrand

Teşekkürler. Bu ayrıntılı bir açıklama ve hızlı bir açıklama! :-)
Philippe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.