it-swarm-tr.com

SQL Server 2005 Nasıl Benzersiz Bir Kısıt Oluşturma?

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

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

180
David Basarab

SQL komutu:

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

Sözdiziminin tamamını görün here .

Bunu bir Veritabanı Diyagramından yapmak istiyorsanız:

  • masaya sağ tıklayın ve 'Dizinler/Anahtarlar'ı seçin
  • yeni bir dizin eklemek için Ekle düğmesine tıklayın
  • gerekli bilgileri sağ taraftaki Özellikler'e girin:
    • i̇stediğiniz sütunları (seçmek için Elips düğmesini tıklayın)
    • set Evet ile Eşsizdir
    • uygun bir isim ver
272
Rory

SQL Server Management Studio Express'te:

  • Tabloya sağ tıklayın, Değiştir veya Dizayn (Sonraki Sürümler İçin)
  • Sağ alana tıklayın, Dizinler/Anahtarlar ...
  • Ekle
  • Sütunlar için, benzersiz olmak istediğiniz alan adını seçin.
  • Tür için, Benzersiz Anahtar öğesini seçin.
  • Kapat , Kaydet / tablosuna tıklayın.
84
James Lawruk
ALTER TABLE [TableName] ADD CONSTRAINT  [constraintName] UNIQUE ([columns])
28
WildJoe

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

Bunu SQL 2008'de filtre uygulanmış bir dizinle yapabilirsiniz:

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

Bkz. Alan değeri, NULL olmadıkça, bir cevap aralığı için benzersiz olmalıdır.

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

Ayrıca bunu veritabanı şemaları aracılığıyla yapabileceğinizi de buldum.

Masayı sağ tıklatarak ve Dizinler/Tuşlar'ı seçerek ...

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

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

Kapat'ı tıklayın ve diyagramı kaydedin; tabloya eklenecektir.

10
David Basarab

Aşağıdaki gibi bir şey arıyorsun

ALTER TABLE dbo.doc_exz
ADD CONSTRAINT col_b_def
UNIQUE column_b

MSDN Belgeleri

8
Thunder3

Tablo zaten oluşturulmuşken 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 kısıtı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.

6
Rafiq

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

5
Gibbons

Bazı durumlarda, Eşsiz anahtarın oluşturulmadan önce var olmadığından emin olmak 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
0
Mario Vázquez