2010-12-20 13 views

cevap

14

Açıklama sütununda bir benzersiz bir dizin ekleyin.

Sql Server Management Studio'yu kullanarak tabloya sağ tıklayın ve Tasarım'ı seçin. Ardından bir sütuna sağ tıklayın ve "Dizinler/anahtarlar" ı seçin. Sen sol altta ekle aşağıdaki pencereye

alt text

tıklayın ile istenir ve ardından endeks özelliklerini belirtmek edilecektir. Ben isim MyUniqueColumn ile Description sütununun yerinde ettik

: Bir DDL komut dosyası kullanmak istiyorsanız o zaman isterseniz ssms GUI ile bunu yapmanın başka bir yolu yoktur bu

CREATE UNIQUE NONCLUSTERED INDEX [IX_INDEXNAME] ON [dbo].[TABLENAME] 
(
    [Description] ASC 
) 
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
GO 
+3

Dizin yerine benzersiz bir kısıtlama kullanmanızı öneririm. Kısıtlama sözdizimi, anahtar kısıtlamalarını uygulamak için daha geleneksel bir yoldur. Dizin sözdiziminden farklı olarak, kısıtlamalar standart SQL'dir ve veritabanının diğer kullanıcıları tarafından ve db şema meta verilerine erişen yazılım araçları tarafından anlaşılma ve tanınması daha olasıdır.Bir benzersizlik kısıtlaması sizin için otomatik olarak bir dizin oluşturur. – sqlvogel

+2

Ayrıca, betikte bunu (ve diğer DDL değişikliklerini) her zaman yapabilmenizi öneririm, bu nedenle bunlar, soruları kontrol sisteminizde düzgün şekilde sürüm haline getirilebilir ve depolanabilir. Veritabanı değişiklikleri asla Management Studio GUI'sinden yapılmamalıdır. – HLGEM

+0

Bir öğeye "Ekle" yi denediğimde ve (Genel) altındaki Sütunlar'ı tıklattığımda, yalnızca "id" sütunumu seçmeme izin veriyor ve bırakmada "Dize" sütununu kullanmama izin vermiyor (hatta göstermiyor) açılan açılan kutu. Sadece iki sütun var, biri bir kimlik, diğeri ise her öğenin benzersiz olması gereken bir metin sütunu. Eklemek için tıklatıp sütuna gittiğimde neden dizinler/anahtarlar bölümünün altındaki metin tabanlı sütunu seçmeme izin vermiyor? –

21

'İkincil birincil anahtar' diye bir şey yoktur. Tablo başına bir birincil anahtar vardır.

(Örneğin, Daha çok bir Product description daha Product Name benzersiz bir dizin oluşturmak için daha olağandır. BTW, yapılacak çok olağan bir şey) Description sütun üzerinde bir UNIQUE constraint oluşturun veya boş değerler varsa Description sütunda oluşturmak bir Filtered index (SQL Server itibaren 2008)

ALTER TABLE dbo.yourTable 
    ADD CONSTRAINT UQ_yourTable_Description UNIQUE ([Description]); 
0

gibi bir şey kullanmak örnek uğruna.

  1. sağ tıklayarak "Endeksleri" ssms Çözüm Explorer'da masanın altında ve (Sana bir contstraint değil bir dizin oluşturmak isteyen biliyorum, ama bu tam olarak ne ADD CONSTRAINT olan "Yeni Index ..." tıklayın SQL komut. does

enter image description here

  1. , yeni indeksi bir ad (örneğin, "UQ_MyUniqueColumn") verin "Benzersiz" işaretleyin ve tıklayın "Add ..."

enter image description here

  1. sonraki pencerede sütununu kontrol

enter image description here

hem pencerelerde Tamam
  • tıklayın
  • +0

    Görüntüleri göremiyorum (güvenlik duvarı şirket bloklarım). Mümkün olan resimdeki transcript metinleri metinlere (SQL) *** mi? – Kiquenet

    +0

    @Kiquenet Resimler, numaralandırılmış adımların sadece ekran görüntüleridir. Herhangi bir adımı takip edemiyorsanız ve daha fazla metin ekleyeceğimi lütfen bana bildirin. –