Aracılığıyla paylaş


table_constraint (Transact-SQL)

BİRİNCİL anahtar, UNIQUE, FOREIGN key veya onay kısıtlama veya bir tablo kullanarak eklenen varsayılan tanımını özelliklerini belirtir alter table.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

[ CONSTRAINT constraint_name ] 
{ 
    { PRIMARY KEY | UNIQUE } 
        [ CLUSTERED | NONCLUSTERED ] 
        (column [ ASC | DESC ] [ ,...n ] )
        [ WITH FILLFACTOR = fillfactor 
        [ WITH ( <index_option>[ , ...n ] ) ]
        [ ON { partition_scheme_name ( partition_column_name ... )
          | filegroup | "default" } ] 
    | FOREIGN KEY 
        ( column [ ,...n ] )
        REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ] 
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
        [ NOT FOR REPLICATION ] 
    | DEFAULT constant_expression FOR column [ WITH VALUES ] 
    | CHECK [ NOT FOR REPLICATION ] ( logical_expression )
}

Bağımsız değişkenler

  • KISITLAMA
    BİRİNCİL anahtar, UNIQUE, FOREIGN key veya onay kısıtlaması veya varsayılan bir tanım başlangıcını belirtir.

  • constraint_name
    Kısıtlamanın adıdır.Kısıtlama adları için kuralları izleyin gerekir tanımlayıcıları, adı bir sayı işareti (#) ile başlatılamıyor olmasıdır.Constraint_name sağlanmazsa, sistem tarafından oluşturulan bir ad kısıtlaması atanır.

  • BİRİNCİL ANAHTAR
    benzersiz dizinkullanarak belirli bir sütun veya sütunları için varlıkbütünlük zorlar bir sınırlamadır. Her tabloiçin yalnızca bir PRIMARY key kısıtlaması oluşturulamaz.

  • BENZERSİZ
    benzersiz dizinkullanarak belirli bir sütun veya sütunları için varlıkbütünlük sağlar bir sınırlamadır.

  • KÜMELENMİŞ | KÜMELENMEMİŞ
    Belirleyen bir kümelenmiş veya kümelenmemiş dizin , birincil anahtar veya benzersiz kısıtlama oluşturulur.clustered için birincil anahtar kısıtlamaları varsayılan.BENZERSİZ kısıtlamaları varsayılan nonclustered için.

    Kümelenmiş kısıtlama veya dizin zaten bir tablovarsa, clustered belirtilemez.Kümelenmiş kısıtlama veya dizin zaten bir tablo, birincil anahtar kısıtlamaları varsayılan nonclustered için varsa.

    Biri olan sütunlar ntext, text, varchar(max), nvarchar(max), varbinary(max), xml, veya image veri türleri sütunlar için bir dizin belirtilemez

  • column
    Bir sütun veya yeni bir kısıtlama kullanılan parantez içinde belirtilen sütun listesi değil.

  • [ ASC | DESC]
    sütun veya tablo kısıtlamaları içinde katılan sütunlar nasıl sıralanacağı belirtir.asc varsayılandır.

  • FILLFACTOR ile **=**fillfactor
    Nasıl tam belirtir Veritabanı Altyapısı olun her dizin sayfası kullanılan saklanacağı dizini veri.Kullanıcı tarafından belirtilen fillfactor değerleri 1 ile 100 arasında olabilir.Bir değer belirtilmezse, varsayılan değer 0'dır.

    Önemli notÖnemli

    Documenting ile FILLFACTOR = fillfactor , geçerli birincil anahtar veya UNIQUE kısıtlamaları yalnızca dizin seçeneği olarak saklanır, geriye doğru uyumluluk için ancak belgelenmemiştir bu şekilde gelecekteki sürümleri.Diğer dizin seçeneklerini de belirtilen index_option yan tümce alter table.

  • ON { partition_scheme_name**(** partition_column_name**)** | filegroup| "varsayılan"" }
    Sınırlama için oluşturulan bir dizin depolama konumu belirtir.partition_scheme_name Belirtilen dizin bölümlenmiş ve bölümleri tarafından belirtilen filegroups için eşleştirilir partition_scheme_name.filegroup Belirtilmişse, dizin adlandırılmış dosya grubuoluşturulur."Varsayılan" belirtilen veya on hiç belirtilmemişse, dizin tabloolarak aynı dosya grubu oluşturulur.kümelenmiş dizin , birincil anahtar veya benzersiz kısıtlama eklendiğinde on belirtilmezse, kümelenmiş dizin oluşturulduğunda, bütün tablo için belirtilen dosya grubu taşınır.

    Bu bağlamda, varsayılan anahtar sözcük değildir; Varsayılan dosya grubu için bir tanımlayıcıdır ve, gibi on sınırlanması gerekir "varsayılan" ya da on varsayılan**[]."Varsayılan"** belirtilmişse, QUOTED_IDENTIFIER seçeneği geçerli oturumiçin açık olması gerekir.Bu varsayılan ayardır.Daha fazla bilgi için, bkz. set QUOTED_IDENTIFIER (Transact-SQL).

  • YABANCI ANAHTAR BAŞVURULARI
    Veri sütuniçin başvuru bütünlük sağlayan bir sınırlamadır.YABANCI anahtar kısıtlamaları her değer sütun belirtilen sütun başvurulan tabloiçinde bulunmasını gerektirir.

  • referenced_table_name
    tablo FOREIGN key kısıtlaması tarafından başvurulan.

  • ref_column
    Bir sütun veya yeni FOREIGN key kısıtlaması tarafından başvurulan parantez içinde sütunlar listesinde değil.

  • SİLME sırasında { Eylem | ART ARDA SIRALI | SET NULL | VARSAYILAN} KÜMESİ
    Bilgi tutarlılığına ilişki satırları varsa ve üst tablobaşvurulan satır silinir değiştirilinceye tablo satır eylem olacağını belirtir.Eylem yok varsayılandır.

    • EYLEM YOK
      SQL Server Veritabanı Altyapısı Raises hata ve üst tablo satır silme eylem toplu geri.

    • ART ARDA SIRALI
      Üst tablosatır silinirse başvuru tablo karşılık gelen satırlar silinir.

    • NULL AYARLAMA
      Ana tablo karşılık gelen satır silindiğinde yabancı anahtar oluşturan tüm küme null değerlerdir.yürütmekbu sınırlama yabancı anahtar sütunları null olmalıdır.

    • VARSAYILAN YAPMA
      Ana tablo karşılık gelen satır silindiğinde yabancı anahtar oluşturan tüm varsayılan değerlerine küme değerlerdir.yürütmekiçin bu sınırlama, tüm yabancı anahtar sütunlarının varsayılan tanımlamaları olmalıdır.sütun Null olabilecek, yok yok açık varsayılan değerini küme, örtülü, varsayılan değeri sütunnull olur.

    tablo kullanan mantıksal kayıtları birleştirme yayın dahil edilecek, cascade belirtmeyin.Mantıksal kayıtları hakkında daha fazla bilgi için bkz: Değişiklikleri'mantıksal kayıtları ile ilgili satırları gruplandırma.

    ÜZERİNDE delete cascade tanımlı bir INSTEAD of tetikleyici on delete değiştirilmiş tablo zaten varsa.

    Örneğin, AdventureWorks2008R2 veritabanı, ProductVendor tablo Satıcı tablo.ProductVendor.VendorID yabancı anahtar başvuruları Vendor.VendorID birincil anahtar.

    delete deyim içinde bir satırda yürütülür, Satıcı tablo ve on delete cascade eylem için belirlenen ProductVendor.VendorID, Veritabanı Altyapısı bir veya daha fazla bağımlı satır için denetimlerini ProductVendor tablo.Herhangi varsa, bağımlı olarak satırları ProductVendor tablo silinir, başvurulan satır ek olarak Satıcı tablo.

    Buna karşılık, Hayır eylem belirttiyseniz, Veritabanı Altyapısı hata yükseltir ve silme eylem geri alır Satıcı en az bir satırda olduğunda satır ProductVendorbaşvurduğutablo .

  • Update { Eylem | ART ARDA SIRALI | SET NULL | VARSAYILAN} KÜMESİ
    Bilgi tutarlılığına ilişki satırları olan ve bulunulan satırın üst tablogüncelleştirilir, değiştirilen tablo satır eylem olacağını belirtir.Eylem yok varsayılandır.

    • EYLEM YOK
      Veritabanı Altyapısı Hata, raises ve üst tablo satır güncelleştirme eylem toplu geri.

    • ART ARDA SIRALI
      Üst tablosatır güncelleştirildiğinde başvuru tablo karşılık gelen satırlar güncelleştirilir.

    • NULL AYARLAMA
      Ana tablo karşılık gelen satır güncelleştirildiğinde yabancı anahtar oluşturan tüm küme null değerlerdir.yürütmekbu sınırlama yabancı anahtar sütunları null olmalıdır.

    • VARSAYILAN YAPMA
      Ana tablo karşılık gelen satır güncelleştirildiğinde yabancı anahtar oluşturan tüm varsayılan değerlerine küme değerlerdir.yürütmekiçin bu sınırlama, tüm yabancı anahtar sütunlarının varsayılan tanımlamaları olmalıdır.sütun Null olabilecek ve yok yok açık varsayılan değeri küme, örtülü, varsayılan değeri sütunnull olur.

    tablo kullanan mantıksal kayıtları birleştirme yayın dahil edilecek, cascade belirtmeyin.Mantıksal kayıtları hakkında daha fazla bilgi için bkz: Değişiklikleri'mantıksal kayıtları ile ilgili satırları gruplandırma.

    INSTEAD of tetikleyici on update değiştirilmiş tablo zaten varsa, üzerinde update cascade tanımlanamaz.

    Örneğin, AdventureWorks2008R2 veritabanı, ProductVendor tablo Satıcı tablo.ProductVendor.VendorID yabancı anahtar başvuruları Vendor.BusinessEntityID birincil anahtar.

    Bir satırda bulunan bir update deyim yürütüldü, Satıcı tablo ve bir on update cascade eylem için belirlenen ProductVendor.BusinessEntityID, Veritabanı Altyapısı bir veya daha fazla bağımlı satır için denetimlerini ProductVendor tablo.Herhangi bulunup bulunmadığını, bağımlı satır ProductVendor tablo güncelleştirilmesi, yanı sıra başvurulan satır Satıcı tablo.

    Buna karşılık, Hayır eylem belirttiyseniz, Veritabanı Altyapısı hata yükseltir ve Güncelleştir eylem geri alır Satıcı en az bir satırda olduğunda satır ProductVendorbaşvurduğutablo .

  • ÇOĞALTMA İÇİN DEĞİL
    YABANCI anahtar kısıtlamaları ve Kontrol kısıtlamaları için belirtilebilir.İçin bir kısıtlama bu yan tümce belirtilirse, çoğaltma aracıları Ekle gerçekleştirdiğinizde kısıtlaması zorlanmaz, güncelleştirme veya silme işlemleri.Daha fazla bilgi için, bkz. Denetleme sınırlamaları, kimlikleri ve tetikleyiciler not ile çoğaltma.

  • VARSAYILAN
    sütuniçin varsayılan değeri belirtir.Varsayılan tanımları, varolan veri satırlarını yeni bir sütun değerlerini sağlamak için kullanılabilir.Varsayılan tanımları olan sütunlar eklenemez bir timestamp veri türü, bir kimlik özellik, varolan bir varsayılan tanımını veya ilişkili bir varsayılan.Varolan bir varsayılan sütun varsa, yeni varsayılan eklenmeden önce varsayılan bırakılan gerekir.kullanıcı tanımlı türsütuniçin varsayılan bir değer belirtilirse, türü bir örtük dönüştürme işlemi desteklemelidir constant_expression kullanıcı tanımlı tür. Önceki sürümleri ile uyumluluk sağlamak için SQL Server, kısıtlama adı, varsayılan atanabilir

  • constant_expression
    Hazır bilgi değeri, null veya sütun varsayılan değer olarak kullanılan bir sistem işlev olabilir.constant_expression Olması için tanımlanmış bir sütun ile birlikte kullanılır bir Microsoft .NET Frameworkkullanıcı tanımlı tür, tür uygulanması gerekir destekleyen bir örtük dönüştürme constant_expression kullanıcı tanımlı tür.

  • İÇİNcolumn
    tablo-düzey varsayılan tanımını ilişkili sütun belirtir.

  • DEĞERLERİ İLE
    Verilen varsayılan değer belirtir constant_expression Yeni bir sütun için eklenen depolanırvarolan satırların.Yalnızca ne zaman varsayılan bir Ekle sütun yan tümcetümcesinde belirtilen değerleri ile belirtilebilir.Eklenen sütun null değerleri ve değerleri ile belirtilen izin veriyorsa, varsayılan değeri varolan satır eklenen yeni sütun depolanır.İLE değerleri için boş değerlere izin sütunları belirtilmezse, yeni bir sütun varolan satırları null depolanır.Yeni bir sütun boş değerlere izin vermez, varsayılan değer olan değerleri belirtmiş olmasına bakılmaksızın yeni satırlar depolanır.

  • ONAY
    Bir sütun veya sütunlara girilebilecek olası değerler sınırlayarak etki alanıbütünlük zorlar bir sınırlamadır.

  • logical_expression
    Bir denetim kısıtlamasında yer kullanılan mantıksal bir ifade ve true veya false döndürür.logical_expressionkullanılan onay kısıtlamaları başka bir tablo başvuru yapamazsınız ama aynı tablo için aynı satırdaki diğer sütunlara başvurabilir.ifade , bir diğer ad veri türü başvuru yapamazsınız.

Açıklamalar

Kısıtlamaları eklenirken, varolan tüm veriler için bir kısıtlama ihlali doğrulanır.Tüm ihlalleri oluşursa, alter table başarısız olur ve bir hata döndürdü.

Yeni bir birincil anahtar veya benzersiz kısıtlama varolan bir sütuneklendiğinde, verileri sütun veya sütunlar benzersiz olmalıdır.Yinelenen değerler bulunursa, alter table başarısız olur.BİRİNCİL anahtar veya UNIQUE kısıtlamaları eklenirken ile nocheck seçeneği hiçbir etkisi olmaz.

Her birincil anahtar ve benzersiz kısıtlama bir dizin oluşturur.BENZERSİZ ve birincil anahtar kısıtlamaları sayısı 999 kümelenmemiş dizinleri ve 1 kümelenmiş dizin tablo üzerinde dizin sayısı neden olamaz.

Örnekler

Örnekler için, bkz. ALTER TABLE (Transact-SQL).