Aracılığıyla paylaş


Kısıtlamaları

Kısıtlamalar tanımlayın izin Database Engine otomatik olarak bir veritabanının bütünlüğünü zorlar. Kısıtlamaları, ilgili sütun için izin verilen değerler kurallarını tanımlamak ve bütünlük zorlama için standart bir mekanizma olan.Kısıtlamaları'nı kullanarak, kullanmaya yeğlenir DML Tetikleyicileri, kuralları, and Varsayılanlar.sorgu iyileştiricisi, yüksek performanslı sorgu yürütme planları oluşturmak için kısıtlama tanımı'nı da kullanır.

Kısıtlama sınıfları

SQL Server aşağıdaki kısıtlamaları sınıflarını destekler:

  • NOT NULL belirleyen sütun NULL değerleri kabul etmiyor.Daha fazla bilgi için bkz:Null değerler için izin verme.

  • Değerlerin konması sınırlayarak, etki alanı bütünlüğü kısıtlamalarını zorlamak CHECK bir sütun.Daha fazla bilgi için bkz:CHECK kısıtlamaları.

    Bir CHECK kısıtlaması (TRUE, FALSE veya Bilinmeyen veren) olan bir Boole belirtir sütun için girilen tüm değerlere uygulanır koşul arayın.YANLıŞ olarak değerlendirme tüm değerleri reddedilir.Her sütun için birden çok CHECK kısıtlamaları belirtebilirsiniz.Aşağıdaki örnek kısıtlama oluşturma göstermektedir. chk_id. Bu sınırlama, etki alanının birincil anahtar ayrıca yalnızca belirli bir aralıktaki sayıları anahtarı girdiğinizi sağlayarak zorlar.

    CREATE TABLE cust_sample
       (
       cust_id            int      PRIMARY KEY,
       cust_name         char(50),
       cust_address         char(50),
       cust_credit_limit   money,
       CONSTRAINT chk_id CHECK (cust_id BETWEEN 0 and 10000 )
       )
    
  • Benzersizlik değerler, UNIQUE kısıtlamaları bir küme sütun.

    Yok iki UNIQUE sınırlaması, satırlar tablo sütunlar için aynı değere sahip olabilir.Birincil anahtarlar de benzersizlik, ancak birincil anahtar benzersiz değerleri biri olarak NULL için izin vermiyor.Daha fazla bilgi için bkz:UNIQUE kısıtlamaları.

  • birincil anahtar kısıtlamaları sütun veya satırda benzersiz olarak tanıtan bir değere sahip sütunları kümesi tanımlayan bir tablo.Daha fazla bilgi için bkz:birincil anahtar kısıtlamaları.

    Iki satır içinde bir tablo aynı birincil anahtar değerini alabilir.NULL, herhangi bir birincil anahtar sütun için giremezsiniz.Küçük, bir tamsayı sütun birincil anahtar olarak kullanmanız önerilir.Her tablo birincil anahtar olmalıdır.Bir sütun veya sütunları bir birincil anahtar değeri için aday anahtar olarak adlandırılır, uygun birleşimi.

    Aşağıdaki örnek oluşturur part_sample Tablo ve belirtir part_nmbr alan birincil anahtar olarak.

    CREATE TABLE part_sample
             (part_nmbr      int         PRIMARY KEY,
             part_name      char(30),
             part_weight      decimal(6,2),
             part_color      char(15) );
    
  • yabancı anahtar kısıtlamaları tanımlamak ve tablolar arasında ilişkiyi zorlamak.Daha fazla bilgi için bkz:yabancı anahtar kısıtlamaları.

    Bir yabancı anahtar tablo başka bir aday anahtarnda işaret tablo.Aşağıdaki örnekte, order_part başvuran yabancı anahtar tablosu kurar part_sample Tablo, önceden tanımlanmış.

    CREATE TABLE order_part
          (order_nmbr      int,
          part_nmbr      int
             FOREIGN KEY REFERENCES part_sample(part_nmbr)
                ON DELETE NO ACTION,
          qty_ordered      int);
    GO
    

    Herhangi bir aday anahtar bu değere sahip ise, NULL dışında bir yabancı anahtar değeri olan bir satır ekleyemiyor.Hangi varolan yabancı anahtarları noktası için bir satırı silmeye çalıştığınızda hangi eylemleri alınır, ON DELETE yan tümce denetler.ON DELETE yan tümce aşağıdaki seçeneklere sahiptir:

    • HIÇBIR EYLEM silme işlemi hata ile başarısız olduğunu belirtir.

    • CASCADE, tüm satırlar için silinmiş olan satırı gösteren yabancı anahtarları da silindiğini belirtir.

    • küme NULL yabancı anahtarlar için silinmiş olan satırı gösteren tüm satırlarla NULL olarak ayarlandığını belirtir.

    • VARSAYıLAN, küme, yabancı anahtarlar için silinmiş olan satırı gösteren tüm satırlarla, varsayılan değer olarak ayarlandığını belirtir.Daha fazla bilgi için bkz:Varsayılanlar.

    ON UPDATE yan tümce, bir aday anahtar değeri varolan hangi yabancı anahtarları noktasına güncelleştirmeye çalışırsanız, gerçekleştirilen eylemleri tanımlar.Bu yan tümce, NO eylem, CASCADE, küme NULL ve küme DEFAULT seçenekleri de destekler.

Sütun ve tablo kısıtlamaları

Kısıtlamalar sütun kısıtlamaları veya tablo kısıtlamaları olabilir.Bir sütun kısıtlama sütun tanımının bir parçası belirtilen ve yalnızca o sütun için geçerlidir.Önceki örnekte kısıtlamaları sütun kısıtlamaları var.Bir tablo kısıtlaması, bir sütun tanımından bağımsız olarak bildirilmiş ve birden fazla sütuna bir tablo uygulayabilirsiniz.Tablo kısıtlamaları, bir kısıtlamasında birden fazla sütun dahil olduğunda kullanılmalıdır.

Örneğin, bir tablonun birincil anahtarında iki veya daha çok sütunu varsa, her iki sütun, birincil anahtar eklemek için bir tablo kısıtlaması kullanmalısınız.Bir fabrikası, bir bilgisayarda gerçekleşen olayları kaydeden bir tablo olarak düşünün.Aynı anda birçok türdeki olaylar oluşabilir, ancak aynı anda gerçekleşen iki olay aynı türde olmasını varsayalım.Bu tabloda her ikisi de ekleyerek uygulanabilmesi event_type ve event_time iki sütunlu birincil anahtar olarak aşağıdaki örnekte gösterilen sütunlar.

CREATE TABLE factory_process
   (event_type   int,
   event_time   datetime,
   event_site   char(50),
   event_desc   char(1024),
CONSTRAINT event_key PRIMARY KEY (event_type, event_time) )