UNIQUE kısıtlamaları ve Check kısıtlamaları

UNIQUE kısıtlamaları ve check kısıtlamaları olan kısıtlamalar veri bütünlüğü içinde uygulamak için kullanılabilecek iki tür SQL Servertabloları. Bunlar önemli veritabanı nesneleridir.

Bu konuda aşağıdaki bölümler bulunur.

UNIQUE kısıtlamaları

check kısıtlamaları

ilişkili Görevler

UNIQUE kısıtlamaları

Kısıtlamaları olan kuralları, SQL Server Veritabanı Altyapısısizin için zorlar. Örneğin, birincil anahtarda katılmayın belirli sütunlara yinelenen değerlerin girilmesini emin olmak için UNIQUE kısıtlamaları kullanabilirsiniz. BENZERSİZ kısıtlama ve PRIMARY key kısıtlaması benzersizliği, UNIQUE sınırlamasıyla PRIMARY key kısıtlaması yerine kullanılacak bir sütun veya sütun birleşimi benzersizliğini zorlamak istiyorsanız, birincil anahtarı değil.

PRIMARY key kısıtlamaları, UNIQUE kısıtlamaları null değeri için izin verir. Ancak, benzersiz kısıtlama katılan herhangi bir değer olarak, tek bir boş değer sütun izin verilir. UNIQUE sınırlamasıyla FOREIGN key kısıtlaması tarafından başvurulabilir.

BENZERSİZ kısıtlama için varsayılan olarak, varolan bir sütun veya tablo sütun eklendiğinde Veritabanı Altyapısısütundaki tüm değerlerin benzersiz olduğundan emin olmak için varolan verileri inceliyor. UNIQUE sınırlamasıyla yinelenen değerleri bir sütun eklenirse Veritabanı Altyapısıhata verir ve kısıtlamayı eklemez.

Veritabanı AltyapısıOtomatik olarak benzersiz bir dizin UNIQUE sınırlamasıyla özgünlüğü gereksinimi zorla oluşturur. Bu nedenle, ekleme denemesi, yinelenen satır yapılır, Veritabanı Altyapısıihlal edildi ve tabloya satır eklemek değil benzersiz kısıtlamayı bildiren bir hata iletisi döndürür. Kümelenmiş bir dizin açıkça belirtilmediği sürece, benzersiz, kümelendirilmemiş dizin UNIQUE sınırlamasıyla zorlamak için varsayılan olarak oluşturulur.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

check kısıtlamaları

check kısıtlamaları bir sütunu tarafından kabul edilen değerler sınırlayarak etki tutarlılığı sağlamak. Ki onlar bir sütununa koyun değerleri kontrol onlar FOREIGN key kısıtlamaları için benzer. Onlar hangi değerlerin geçerli olmadığını nasıl içinde fark vardır: FOREIGN key kısıtlamaları geçerli değerler listesine başka bir tablodan elde etmek ve check kısıtlamaları başka bir sütundaki verileri esas değil mantıksal ifadesi geçerli değerlerini belirler. Örneğin, değerleri aralığının bir maaş sütun sınırlı $15,000 $100,000 arasında uzanan verileri sağlayan check kısıtlaması oluşturarak. Bu maaşlar dışında düzenli maaş aralığı girilmesini engeller.

check kısıtlaması üzerinde mantıksal işleçler döndürür true veya false dayalı herhangi bir mantıksal (Boolean) ifade ile oluşturabilirsiniz. Önceki örneğin, mantıksal bir ifadedir: salary >= 15000 AND salary <= 100000.

Tek bir sütun için birden çok check kısıtlamaları uygulayabilirsiniz. Ayrıca, birden çok sütun tablo düzeyinde oluşturarak tek check kısıtlaması uygulayabilirsiniz. Örneğin, birden çok sütun check kısıtlaması birisi ile satır onaylamak için kullanılan bir country_region sütun değeri ABD da iki karakterlik değeri vardır devlet sütun. Bu bir yerde kontrol edilmesi birden fazla koşul sağlar.

Dikkat notuDikkat

Açık veya örtülü veri türü dönüştürme içeren kısıtlamalar belirli işlemleri başarısız olmasına neden olabilir. Örneğin, Bölüm geçiş kaynakları olan tablolar üzerinde tanımlandığı gibi sınırlamalar, bir alter table neden olabilir...GEÇİŞ işlemi başarısız. Veri türü dönüştürme kısıtlaması tanımlarındaki kaçının.

check sınırlamaları sınırlamaları

check kısıtlamaları yanlış değerlendirmek değerleri reddedebilir. NULL değerler bilinmeyen değerlendirin çünkü onların huzurunda ifadeleri kısıtlama kılabilir. Kısıtlama üzerine yerleştirdiğiniz diyelim bir intsütun Sütunum belirterek, Sütunum sadece 10 değeri içerebilir (Sütunum=10). Değeri eklerseniz içine null Sütunum, Veritabanı Altyapısınull ekler ve hata döndürmez.

check kısıtlaması, o denetliyor koşul tablodaki her satır için false olduğunda true döner. Sadece oluşturulan tablo herhangi bir satır yoksa, herhangi bir denetim kısıtlaması bu tablodaki geçerli sayılır. Bu durum, aşağıdaki örnekte olduğu gibi beklenmedik sonuçlar doğurabilir.

CREATE TABLE CheckTbl (col1 int, col2 int);
GO
CREATE FUNCTION CheckFnctn()
RETURNS int
AS 
BEGIN
   DECLARE @retval int
   SELECT @retval = COUNT(*) FROM CheckTbl
   RETURN @retval
END;
GO
ALTER TABLE CheckTbl
ADD CONSTRAINT chkRowCount CHECK (dbo.CheckFnctn() >= 1 );
GO

CHECKKısıtlaması tablosundaki en az bir satır olması gerektiğini belirtir eklenen CheckTbl. Çünkü hiçbir satır tablosundaki karşı bu sınırlama durumunu denetlemek için ancak, alter table deyimi başarılı olur.

KONTROL kısıtlamaları delete deyimleri sırasında doğrulanır. Bu nedenle, belirli türde check kısıtlamaları tablolar delete deyimleri yürütme, beklenmeyen sonuçlar doğurabilir. Örneğin, tablo üzerinde yürütülen aşağıdaki ifadeleri dikkate CheckTbl.

INSERT INTO CheckTbl VALUES (10, 10);
GO
DELETE CheckTbl WHERE col1 = 10;

DELETEDeyimi başarılı, olsa bile CHECKBu tablo kısıtlaması belirtir CheckTblen az 1satır.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

ilişkili Görevler

[!NOT]

Tabloyu çoğaltma için yayımlanan, Transact-sql deyimini kullanarak şema değişiklikleri yapmalısınız alter table ya da SQL Server Management Objects (smo). Tablo Tasarımcısı veya veritabanı diyagramı Tasarımcısı kullanarak şema değişiklikleri yapıldığında, açılır ve tabloyu yeniden dener. Yayımlanmış nesneler bırakamazsınız, bu nedenle şema değişikliği başarısız olur.

Görev

Konu

Benzersiz kısıtlama oluşturma açıklanmaktadır.

Benzersiz kısıtlama oluşturma

UNIQUE sınırlamasıyla değiştirmek nasıl açıklar.

UNIQUE kısıtlamaları değiştirmek

UNIQUE sınırlamasıyla silmek nasıl açıklar.

Benzersiz kısıtlama silme

Çoğaltma aracısı ekler veya tablonuzdaki verileri güncelleştirir, Denetim kısıtlamasını devre dışı bırakma açıklanmaktadır.

Çoğaltma için Denetim kısıtlamalarını devre dışı bırakma

Veri eklendi, güncellenen veya tablodan silinmiş denetim kısıtlamasını devre dışı bırakma açıklanmaktadır.

Check sınırlamaları INSERT ve update deyimiyle devre dışı bırakma

Kısıtlama ifadesi veya etkinleştirmek veya belirli koşulların kısıtlamasını devre dışı bırakma seçenekleri değiştirme yöntemleri açıklanır.

Check kısıtlamaları değiştirmek

Denetim kısıtlaması silme açıklar.

Check kısıtlamaları silme

Check kısıtlaması özelliklerini görüntülemek açıklar.

How to: Show Check Constraint Properties (Visual Database Tools)

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]