Aracılığıyla paylaş


computed_column_definition (Transact-SQL)

Kullanılarak eklenen tablo hesaplanan bir sütun özelliklerini belirtir alter table.

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

Sözdizimi

column_name AS computed_column_expression
[ PERSISTED [ NOT NULL ] ]
[ 
    [ CONSTRAINT constraint_name ]
    { PRIMARY KEY | UNIQUE }
        [ CLUSTERED | NONCLUSTERED ]
        [ WITH FILLFACTOR = fillfactor ]
        [ WITH ( <index_option> [, ...n ] ) ]
        [ ON { partition_scheme_name (partition_column_name ) | filegroup 
            | "default" } ]
    | [ FOREIGN KEY ] 
        REFERENCES ref_table [ ( ref_column ) ] 
        [ ON DELETE { NO ACTION | CASCADE } ] 
        [ ON UPDATE { NO ACTION } ] 
        [ NOT FOR REPLICATION ] 
    | CHECK [ NOT FOR REPLICATION ] ( logical_expression )
]

Bağımsız değişkenler

  • column_name
    Değiştirilen, eklenen veya bırakılan sütun addır.column_name1 ile 128 karakter olabilir.Yeni makaleler için column_name ile oluşturulan sütunlar için atlanmış bir timestamp veri türü.Yok, column_name için belirtilen bir timestamp veri türü sütun, ad timestamp kullanılır.

  • computed_column_expression
    Hesaplanmış bir sütundeğeri tanımlayan bir ifade olur.Hesaplanmış bir sütun tablo fiziksel olarak depolanmaz, ancak diğer sütunları aynı tablokullanan bir ifade hesaplanan bir sanal sütun bulunur.Örneğin, hesaplanmış bir sütun tanımına sahip olabilir: costAS price * qty.ifade , noncomputed sütun adı, sabit, işlev, değişken ve bu bağlı bir veya daha çok işleç tarafından herhangi bir birleşimi olabilir.ifade , bir alt sorgu olması veya bir diğer ad veri türü içerir.

    Hesaplanan sütunlar seçin listeleri, where yan tümceleri, order by yan tümceleri veya normal ifadeler kullanıldığı diğer konumlardan, ancak aşağıdaki istisnalar kullanılabilir:

    • Hesaplanmış bir sütun , bir varsayılan veya yabancı anahtar kısıtlaması tanımı olarak veya not null kısıtlaması tanımı kullanılamaz.Ancak, hesaplanan sütun değeri tarafından deterministic ifade tanımlanır ve sonuç veri türü dizin sütunları izin verilir, hesaplanmış bir sütun dizin anahtar sütun veya birincil anahtar veya benzersiz kısıtlama bir parçası olarak kullanılabilir.

      Örneğin, tablo tamsayı sütunlar varsa bir ve b, hesaplanan sütun a + b dizine eklenmeli, ancak hesaplanan sütun a + datepart (dd, getdate()) oluşturulamaz, çünkü sonraki çağırmaları. değer değişebilir

    • Hesaplanmış bir sütun , bir INSERT veya update deyim hedef olamaz.

      Not

      Her satır, bir tablo bir hesaplanan sütunkatılan sütunlar farklı değerleri olduğundan, hesaplanan sütun her satır için aynı sonuç olmayabilir.

  • KALICI
    Belirleyen Veritabanı Altyapısı fiziksel olarak hesaplanan değerleri ' % s'tablosu tabloiçinde saklamak ve hesaplanmış bir sütun bağımlı olduğu diğer sütunlara güncelleştirilme zamanını değerleri güncelleştirin.PERSISTED olarak hesaplanan bir sütun işaretleme dizin deterministic ancak değil kesin olan bir hesaplanmış sütun oluşturulmasına izin verir.Daha fazla bilgi için, bkz. Dizinler üzerinde hesaplanan sütunlar oluşturma.bölümleme sütun bölümlenmiş tablo olarak kullanılan hesaplanmış sütunlar PERSISTED açıkça işaretlenmelidir.computed_column_expressionPERSISTED belirtildiğinde belirleyici olmalıdır.

  • NULL | NOT NULL
    sütun null değerlere izin verilip verilmeyeceğini belirtir.null kesinlikle bir kısıtlaması değil, ancak değil gibi belirtilen boş.not null yalnızca PERSISTED de belirtilmişse hesaplanan sütunlar için belirtilebilir.

  • KISITLAMA
    Bir birincil anahtar veya benzersiz kısıtlama tanımı başlangıcını belirtir.

  • constraint_name
    Yeni sınırlamadı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 Olan sağlanmayan, sistem tarafından oluşturulan bir ad kısıtlaması. için atanmış

  • 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.

  • FILLFACTOR ile =fillfactor
    Nasıl tam belirtir SQL Server 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 (Transact-SQL) yan tümce alter table.

  • YABANCI ANAHTAR BAŞVURULARI
    Verileri sütun veya sütunları için başvuru bütünlük sağlayan bir sınırlamadır.YABANCI anahtar kısıtlamaları, her değeri sütun karşılık gelen başvurulan sütun veya tablobaşvurulan var gerektirir.YABANCI anahtar kısıtlamaları başvurulan tablo birincil anahtar veya UNIQUE kısıtlamaları olan sütunlar veya başvurulan tabloüzerinde benzersiz bir dizin içinde başvurulan sütunları başvuruda bulunabilir.Hesaplanan sütunlar üzerinde yabancı anahtarları da PERSISTED işaretlenmelidir.

  • ref_table
    FOREIGN key kısıtlaması tarafından başvurulan tablo adıdır.

  • (ref_column )
    FOREIGN key kısıtlaması tarafından başvurulan tablo sütun kullanılamıyor.

  • SİLME sırasında { Eylem | ART ARDA SIRALI}
    eylem tablo satır bilgi tutarlılığına ilişki satırları varsa ve üst tablobaşvurulan satır silinir olacağını belirtir.Eylem yok varsayılandır.

    • EYLEM YOK
      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.

    Örneğin, AdventureWorks2008R2 veritabanı, ProductVendor tablo Vendor tablo.ProductVendor.BusinessEntityIDyabancı anahtar başvuruları Vendor.BusinessEntityID birincil anahtar.

    delete deyim içinde bir satırda yürütülür, Vendor tablove on delete cascade eylem için belirlenen ProductVendor.BusinessEntityID, 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 Vendor tablo.

    Buna karşılık, Hayır eylem belirttiyseniz, Veritabanı Altyapısı hata yükseltir ve silme eylem geri alır Vendor en az bir satırda olduğunda satır ProductVendor tablo it. başvurular

    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.

  • Update { Eylem }
    Bilgi tutarlılığına ilişki satırları olan ve bulunulan satırın üst tablogüncelleştirilir, oluşturulan tablo satır eylem olacağını belirtir.Hayır eylem belirtildiğinde, Veritabanı Altyapısı hata yükseltir ve Güncelleştir eylem geri alır Vendor en az bir satırda ise satır ProductVendor tablo it. başvurular

  • Ç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.

  • 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. Hesaplanan sütunlar üzerinde kısıtlamalar PERSISTED işaretlenmelidir DENETLEYİN.

  • logical_expression
    true veya false döndüren mantıksal bir ifade olur.ifade , bir diğer ad veri türü için bir başvuru içeremez.

  • ON { partition_scheme_name(partition_column_name) | filegroup| "default"}
    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.

    Not

    Bu bağlamda, varsayılan anahtar sözcük değil.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).

Açıklamalar

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.