table_constraint (Transact-sql)

PRIMARY key, UNIQUE, FOREIGN key veya check kısıtlaması veya default tanımını kullanarak tabloya eklenen özelliklerini belirtir alter table.

Konu bağlantısı simgesi Transact-SQL Sözdizim 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
    PRIMARY key, UNIQUE, FOREIGN key veya check 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ı izlemeniz gerekir tanımlayıcılarıdışında adı bir sayı işareti (#) ile başlayamaz. CONSTRAINT_NAME belirtilmezse, sistem tarafından oluşturulan bir ad kısıtlaması atanır.

  • PRIMARY KEY
    Benzersiz bir dizin kullanarak belirtilen sütun veya sütun için varlık tutarlılığını zorlayan bir sınırlamadır. Her tablo için yalnızca bir birincil anahtar kısıtlaması oluşturulabilir.

  • UNIQUE
    Benzersiz bir dizin kullanarak belirtilen sütun veya sütunları için varlık tutarlılığını sağlar bir sınırlamadır.

  • CLUSTERED | NONCLUSTERED
    Kümelenmiş veya kümelendirilmemiş bir dizin için birincil anahtar veya UNIQUE sınırlamasıyla oluşturulur belirtir. BİRİNCİL anahtar kısıtlamaları varsayılan kümelenmiş. UNIQUE kısıtlamaları varsayılan nonclustered.

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

    Olan sütunlar ntext, text, varchar(max), nvarchar(max), varbinary(max), xml, ya imageveri türleri sütunlar için dizin belirtilemez.

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

  • ASC | DESC]
    Sütun veya Tablo kısıtlamaları katılan nasıl sıralanacağı belirtir. Varsayılan değer ASC'tur.

  • FILLFACTOR ile **=**fillfactor
    Nasıl tam belirtir Veritabanı Altyapısıdizin verileri depolamak için kullanılan her dizin sayfasının yapmalısınız. Kullanıcı tarafından belirtilen fillfactordeğerleri 1 ile 100 arasında olabilir. Bir değer belirtilmezse, varsayılan değer 0'dır.

    Önemli notÖnemli

    Documenting ile FILLFACTOR = fillfactorPRIMARY key veya UNIQUE kısıtlamaları uygulanır yalnızca dizin seçeneği geriye dönük uyumluluk için korunur, ancak bu şekilde gelecekte belgelenen değil serbest. Diğer dizin seçeneklerini belirtilebilir index_option yan alter table.

  • ON { partition_scheme_name**(partition_column_name)** | filegroup| "varsayılan'' }
    Kısıtlaması için oluşturulan dizin depolama konumunu belirtir. Eğer partition_scheme_nameBelirtilen dizin bölümlendirilir ve tarafından belirtilen filegroups bölümlerin eşlenir partition_scheme_name. Eğer filegroupbelirtilirse, dizin oluşturulan adlandırılmış filegroup. Eğer "varsayılan" belirtilen veya on her belirtilmezse, tablo olarak aynı filegroup dizin oluşturulur. Kümelenmiş bir dizin, birincil anahtar veya benzersiz kısıtlama için eklendiğinde on belirtilirse, Bütün tablo kümelenmiş bir dizin oluşturulduğunda belirtilen filegroup için taşınır.

    Bu bağlamda, varsayılan anahtar sözcük değildir; Bu varsayılan filegroup tanımlayıcısı ve, içinde olarak ayrılmış gerekir "varsayılan" ya da on varsayılan**[]**. Eğer "varsayılan" belirtilirse, quoted_ıdentıfıer seçeneği geçerli oturum için on olması gerekir. Bu, varsayılan ayardır.

  • FOREIGN KEY REFERENCES
    Sütun veri tutarlılığı sağlayan bir sınırlamadır. FOREIGN key kısıtlamaları sütunundaki her değer içinde başvurulan tabloda belirtilen sütun bulunmaktadır gerektirir.

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

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

  • on delete { eylem | ART ARDA SIRALI | NULL AYARLAMA | SET DEFAULT}
    Bilgi tutarlılığına ilişki satırları varsa ve bulunulan satırın üst tablosundan silinir değişmiş tablodaki satır eylemi olur belirtir. Eylem varsayılandır.

    • EYLEM YOK
      SQL Server Veritabanı AltyapısıHata ve üst tablodaki satır silme eylemi geri haddelenmiş yükseltir.

    • ART ARDA SIRALI
      Ana tablodan satır silinirse başvuru tablosundan karşılık gelen satırlar silinir.

    • NULL AYARLAMA
      Üst tablodaki karşılık gelen satır silindiğinde, yabancı anahtarı oluşturan tüm değerlerini null olarak ayarlanır. Bu sınırlama yürütmek yabancı anahtar sütunları NULL olmalıdır.

    • VARSAYILAN OLARAK AYARLA
      Üst tablodaki karşılık gelen satır silindiğinde, yabancı anahtarı oluşturan tüm değerler varsayılan değerlerine ayarlanır. Bu sınırlama yürütmek default tanımları tüm yabancı anahtar sütunları olması gerekir. Sütun NULL olabilecek ve açık varsayılan değeri ayarlanmış yok, sütunun örtük varsayılan değer null olur.

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

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

    Örneğin, AdventureWorks2012 veritabanı, ProductVendor tablo vardır bilgi tutarlılığına ilişkisi olan Satıcı tablosu. ProductVendor.VendorID yabancı anahtar başvuruları ProductVendor.VendorIDVendor.VendorID birincil anahtar.

    delete deyimi içinde bir satırda yürütülür Satıcı tablo ve on delete cascade eylemi belirtilen için ProductVendor.VendorID, Veritabanı Altyapısıkontrol için bir veya daha fazla bağımlı satır ProductVendor tablosu. Varsa, bağımlı olarak satırları ProductVendor tablo silinir, başvurulan satır ek olarak Satıcı tablosu.

    Buna karşılık, hayır eylem belirttiyseniz, Veritabanı Altyapısıhata yükseltir ve silme eylemi geri alır Satıcı olduğu zaman en az bir satır satır ProductVendor başvurduğu tablo.

  • Update { eylem | ART ARDA SIRALI | NULL AYARLAMA | SET DEFAULT}
    O sıralar bilgi tutarlılığına bir ilişki var ve başvurulan satır Ana tabloda güncelleştirilir değişmiş tablodaki satırların ne olur belirtir. Eylem varsayılandır.

    • EYLEM YOK
      Veritabanı AltyapısıHata ve üst tablodaki satır güncelleştirme eylemini geri haddelenmiş yükseltir.

    • ART ARDA SIRALI
      Ana tabloda satır güncelleştirildiğinde başvuru tablosunda karşılık gelen satırlar güncelleştirilir.

    • NULL AYARLAMA
      Üst tablodaki karşılık gelen satır güncelleştirildiğinde yabancı anahtarı oluşturan tüm değerlerini null olarak ayarlanır. Bu sınırlama yürütmek yabancı anahtar sütunları NULL olmalıdır.

    • VARSAYILAN OLARAK AYARLA
      Üst tablodaki karşılık gelen satır güncelleştirildiğinde yabancı anahtarı oluşturan tüm değerler varsayılan değerlerine ayarlanır. Bu sınırlama yürütmek default tanımları tüm yabancı anahtar sütunları olması gerekir. Bir sütun NULL olabilecek ve açık varsayılan değeri ayarlanmış yok, sütunun örtük varsayılan değer null olur.

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

    on update cascade, set null veya default set bir INSTEAD of tetikleyici on update değiştirilmiş tablo zaten varsa tanımlanamaz.

    Örneğin, AdventureWorks2012 veritabanı, ProductVendor tablo vardır bilgi tutarlılığına ilişkisi olan Satıcı tablosu. ProductVendor.VendorID yabancı anahtar başvuruları ProductVendor.VendorIDVendor.VendorID birincil anahtar.

    Bir update deyimi içinde bir satırda yürütülür Satıcı tablo ve bir on update cascade eylemi belirtilen için ProductVendor.VendorID, Veritabanı Altyapısıkontrol için bir veya daha fazla bağımlı satır ProductVendor tablosu. Herhangi biri varsa, bağımlı satır ProductVendor tablosu güncelleştirilir, yanı sıra başvurulan satır Satıcı tablosu.

    Buna karşılık, hayır eylem belirttiyseniz, Veritabanı Altyapısıhata yükseltir ve Güncelleştir eylemi geri alır Satıcı olduğu zaman en az bir satır satır ProductVendor başvurduğu tablo.

  • NOT FOR REPLICATION
    FOREIGN key kısıtlamaları ve check kısıtlamaları için belirtilebilir. Bu yan sınırlama için belirtilirse, çoğaltma aracıları Ekle gerçekleştirdiğinizde kısıtlaması zorlanmaz, güncelleştirme veya silme işlemleri.

  • DEFAULT
    Sütunun varsayılan değeri belirtir. default tanımları, veri varolan satırları yeni bir sütunda değer sağlamak için kullanılabilir. default tanımları olan sütunlar eklenemez bir timestampveri türü, IDENTITY özelliği, varolan varsayılan tanımını veya bir ilişkili varsayılan. Yeni varsayılan eklenebilmesi için önce varolan bir varsayılan sütun varsa, varsayılan bırakılan gerekir. Bir kullanıcı tanımlı türü sütun için varsayılan bir değer belirtilirse, bir örtük dönüştürme türünü desteklemesi gereken constant_expressionkullanıcı tanımlı türü. Önceki sürümleri ile uyumluluk sağlamak için SQL Server, bir varsayılan kısıtlama adı atanabilir.

  • constant_expression
    Hazır bilgi değeri, null veya sütun varsayılan değer olarak kullanılan bir sistem işlevi olabilir. Eğer constant_expressionolmak üzere tanımlanmış bir sütun ile birlikte kullanılan bir Microsoft  .NET Frameworktürü, kullanıcı tanımlı türü uygulanması bir örtük dönüştürme desteği constant_expressionkullanıcı tanımlı türü.

  • İÇİNcolumn
    Tablo düzeyi default tanımı ile ilişkili sütun belirtir.

  • DEĞERLERİ İLE
    Varsayılan verilen değer belirtir constant_expression, varolan satır eklenen yeni bir sütun depolanan. Sadece ne zaman varsayılan bir add sütun yan tümcesinde belirtilen değerleri ile belirtilebilir. Eklenen sütunun null değerleri ve değerleri ile belirtilen izin veriyorsa, varsayılan değeri varolan satır eklenen yeni bir sütun depolanır. DEĞERLERİ ile sütun için boş değerlere izin belirtilmemişse, varolan satırları yeni bir sütunda null depolanır. Yeni bir sütun boş değerlere izin vermez, varsayılan değer değerleri ile belirtmiş olmasına bakılmaksızın yeni satırlar depolanır.

  • CHECK
    Etki alanı bütünlüğünü bir sütuna veya sütunlara girilebilecek olası değerleri sınırlayarak zorlayan bir kısıtlamadır.

  • logical_expression
    check kısıtlaması içinde kullanılan mantıksal bir ifadedir ve true veya false döndürür. logical_expressionkullanılan check kısıtlamaları başka bir tabloya başvuru yapamazsınız ama aynı satırın aynı tablodaki diğer sütunlara başvurabilir. İfade, bir diğer ad veri türü başvuru yapamazsınız.

Açıklamalar

FOREIGN key veya check kısıtlamaları eklendiğinde, varolan tüm veriler doğrulanır kısıtlama ihlalleri ile nocheck seçeneği belirtilmediği sürece. Herhangi bir ihlali oluşursa, alter table başarısız olur ve bir hata döndürülür. Yeni bir birincil anahtar veya benzersiz kısıtlama varolan bir sütun eklendiğinde, sütun veya sütunları veri benzersiz olmalıdır. Yinelenen değerler bulunursa, alter table başarısız olur. PRIMARY key veya UNIQUE kısıtlamaları eklendiğinde etkisi ile nocheck seçeneği yoktur.

Her PRIMARY key ve UNIQUE sınırlamasıyla bir dizin oluşturur. PRIMARY key ve UNIQUE kısıtlamaları sayısı dizin sayısı 999 kümelendirilmemiş dizinler ve 1 kümelenmiş bir dizin için masaya neden olamaz. Yabancı anahtar kısıtlamaları dizin otomatik olarak oluşturmaz. Ancak yabancı anahtar sütunları sık üyelik ölçütleri sorgular sütun veya sütunlar benzersiz veya birincil anahtar sütunu veya diğer tablodaki sütunları olan bir tablonun yabancı anahtar kısıtlaması eşleştirilerek kullanılır. Yabancı anahtar sütunları üzerinde bir dizin sağlar Veritabanı Altyapısıyabancı anahtar tablosunda ilgili verileri hızla bulmak için.

Örnekler

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

Ayrıca bkz.

Başvuru

ALTER TABLE (Transact-SQL)

Diğer Kaynaklar

Controlling Constraints and Triggers with NOT FOR REPLICATION (NFR)