SQL Server 2005 Nasıl Benzersiz Bir Kısıtlama Oluşturulur?


181

SQL Server 2005'te varolan bir tabloda benzersiz bir kısıtlama nasıl oluştururum?

Hem TSQL hem de Veritabanı Şeması'nda nasıl yapılacağını arıyorum.

Yanıtlar:


272

SQL komutu:

ALTER TABLE <tablename> ADD CONSTRAINT
            <constraintname> UNIQUE NONCLUSTERED
    (
                <columnname>
    )

Söz diziminin tamamını buradan görebilirsiniz .

Bir Veritabanı Diyagramından yapmak istiyorsanız:

  • tabloya sağ tıklayın ve 'Dizinler / Anahtarlar'ı seçin
  • yeni bir dizin eklemek için Ekle düğmesini tıklayın
  • sağ taraftaki Özellikler'e gerekli bilgileri girin:
    • istediğiniz sütunları seçin (seçmek için üç nokta düğmesini tıklayın)
    • set Evet'e Özgüdür
    • ona uygun bir isim ver

1
Çalışıyor ... ama ... kısıtlama neden İNDİSLER klasörü altında gösteriliyor, bunun yerine CONSTRAINTS klasörü. Başka bir simgeyle gösterilir, ancak yine de kısıtlamalar klasöründe olmalıdır.
Fernando Torres

84

SQL Server Management Studio Express'te:

  • Tabloyu sağ tıklayın, Değiştir veya Tasarım'ı seçin (Sonraki Sürümler için)
  • Alanı sağ tıklayın, Dizinler / Anahtarlar'ı seçin ...
  • tıklayın Ekle
  • İçin Sütunlar , seçmek alan adını benzersiz olmak istiyorum.
  • İçin Tipi , seçim Benzersiz Anahtarını .
  • Click Yakın , kaydet masaya.

29
ALTER TABLE [TableName] ADD CONSTRAINT  [constraintName] UNIQUE ([columns])

15

Uyarı: Benzersiz olarak ayarladığınız sütunda yalnızca bir boş satır olabilir.

Bunu SQL 2008'de filtrelenmiş bir dizinle yapabilirsiniz:

CREATE UNIQUE NONCLUSTERED INDEX idx_col1
ON dbo.MyTable(col1)
WHERE col1 IS NOT NULL;

Bkz NULL olmadıkça Alan değeri benzersiz olmalıdır cevapları bir dizi için.


bunu sql server 2005'te nasıl yapıyorsunuz?
Maxrunner

2
SQL Server 2005'te gerçekleştirilemez. Daha güncel bir
RDBMS'ye

13
ALTER TABLE dbo.<tablename> ADD CONSTRAINT
            <namingconventionconstraint> UNIQUE NONCLUSTERED
    (
                <columnname>
    ) ON [PRIMARY]

10

Ben de bunu veritabanı diyagramları aracılığıyla yapabileceğinizi buldum.

Tabloyu sağ tıklayıp Dizinler / Tuşlar'ı seçerek ...

'Ekle' düğmesini tıklayın ve sütunları benzersiz hale getirmek istediğiniz sütunlara değiştirin.

Değişiklik Evet'e Özgüdür.

Kapat'ı tıklayın ve diyagramı kaydedin, tabloya ekleyecektir.



6

Tablo zaten oluşturulduğunda bir veya birden çok sütunda UNIQUE kısıtlaması oluşturmak için aşağıdaki SQL'i kullanın:

ALTER TABLE TableName ADd UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)

Yukarıdaki sorgu için UNIQUE sınırlamasının adlandırılmasına izin vermek için

ALTER TABLE TableName ADD CONSTRAINT un_constaint_name UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)

MySQL / SQL Server / Oracle / MS Access tarafından desteklenen sorgu.


UNIQUE NONCLUSTERED ve seçenekler PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON ?
Kiquenet

5

Yönetim stüdyosu diyagramında tabloyu seçin, isterseniz yeni sütun eklemek için sağ tıklayın, sütuna sağ tıklayın ve "Kısıtlamaları Kontrol Et" i seçin, orada bir tane ekleyebilirsiniz.


0

Bazı durumlarda, Benzersiz anahtarın oluşturulmadan önce var olmamasının sağlanması istenebilir. Bu gibi durumlarda, aşağıdaki komut dosyası yardımcı olabilir:

IF Exists(SELECT * FROM sys.indexes WHERE name Like '<index_name>')
    ALTER TABLE dbo.<target_table_name> DROP CONSTRAINT <index_name> 
GO

ALTER TABLE dbo.<target_table_name> ADD CONSTRAINT <index_name> UNIQUE NONCLUSTERED (<col_1>, <col_2>, ..., <col_n>) 
GO
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.