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.
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:
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:
SQL Server Management Studio Express'te:
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.
ALTER TABLE dbo.<tablename> ADD CONSTRAINT
<namingconventionconstraint> UNIQUE NONCLUSTERED
(
<columnname>
) ON [PRIMARY]
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.
Aşağıdaki gibi bir şey arıyorsunuz
ALTER TABLE dbo.doc_exz
ADD CONSTRAINT col_b_def
UNIQUE column_b
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
?
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