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.