Share via


computed_column_definition (Transact-sql)

Kullanarak bir tabloya eklenen hesaplanmış bir sütun özelliklerini belirtir alter table.

Konu bağlantısı simgesi Transact-SQL Sözdizim 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ştirilecek, eklenecek veya bırakılacak sütunun adıdır. column_name1-128 karakter olabilir. Yeni sütun, column_nameile oluşturulan sütunlar için atlanmış bir timestampveri türü. Yok eğer column_nameiçin belirtilen bir timestampveri türü sütununda, ad timestampkullanılır.

  • computed_column_expression
    Hesaplanan bir sütunun değerini tanımlayan bir ifadedir. Hesaplanmış bir sütun fiziksel tablosunda depolanmaz, ancak aynı tabloda diğer sütunları kullanan bir ifadeden hesaplanan sanal bir sütundur. Örneğin, hesaplanmış bir sütun tanımı olabilir: costas price* qty. İfade noncomputed sütun adı, sabit, işlev, değişken ve bunlar tarafından bir veya daha çok işleç bağlı herhangi bir birleşimi olabilir. İfade bir sorgu edilemez veya 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 konumlarda, ancak aşağıdaki istisnalar kullanılabilir:

    • Hesaplanmış bir sütun, default veya FOREIGN key kısıtlaması tanımı veya not null kısıtlaması tanımı ile kullanılamaz. Ancak, hesaplanan sütun değeri deterministik bir ifade tarafından tanımlanır ve sonuç veri türü dizin sütunları izin verilir, hesaplanmış bir sütun içinde dizin anahtar sütunu veya herhangi bir birincil anahtar veya UNIQUE sınırlamasıyla bir parçası olarak kullanılabilir.

      Tablo tamsayı sütunlar varsa Örneğin, a ve b, hesaplanan sütun a + bdizine eklenmiş olabilir, ama sütunu hesaplanan a + datepart (dd, getdate()) can't endeksli, çünkü değeri change in subsequent invocations.

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

      [!NOT]

      Bir tablodaki her satır için hesaplanan bir sütun katılan sütunlar farklı değerleri olduğundan, hesaplanan sütun her satır için aynı sonucu olabilir.

  • KALICI
    Belirleyen Veritabanı Altyapısıfiziksel olarak hesaplanan değerleri tabloda depolamaya ve hesaplanan sütun bağımlı olduğu diğer sütunlara güncelleştirilme zamanını değerleri güncelleştirin. Hesaplanmış bir sütun olarak PERSISTED işaretleme deterministic ancak değil kesin, hesaplanmış bir sütun üzerinde oluşturulacak dizin sağlar. Daha fazla bilgi için, bkz. Hesaplanan sütun dizinlerde. Bölümleme bölümlenmiş bir tabloya sütun olarak kullanılan hesaplanmış sütunları açıkça PERSISTED işaretlenmelidir. computed_column_expressionPERSISTED belirtildiğinde deterministik olması gerekir.

  • NULL | NOT NULL
    Sütunda null değerlere izin verilip verilmeyeceğini belirtir. null kesinlikle bir sınırlama değil ama değil gibi belirtilen boş. NOT NULL deyimi, hesaplanan sütunlar için yalnızca PERSISTED deyimi de belirtilirse belirtilebilir.

  • KISITLAMA
    PRIMARY key veya UNIQUE sınırlaması tanım başlangıcını belirtir.

  • constraint_name
    Yeni bir sınırlamadır. Kısıtlama adları için kuralları izlemeniz gerekir tanımlayıcılarıdışında adı bir sayı işareti (#) ile başlayamaz. Eğer constraint_name ise sağlanan değil, 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 belirli bir 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.

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

  • FOREIGN KEY REFERENCES
    Sütun veya sütunları veri tutarlılığı sağlayan bir sınırlamadır. FOREIGN key kısıtlamaları, her değer sütununda karşılık gelen başvurulan sütun veya sütunları başvurulan tablodaki var gerektirir. FOREIGN key kısıtlamaları, PRIMARY key veya UNIQUE kısıtlamaları başvurulan tablodaki 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 tablonun adıdır.

  • (ref_column )
    FOREIGN key kısıtlaması tarafından başvurulan tablodan bir sütun iş.

  • on delete { eylem | ART ARDA SIRALI}
    Ne eylem tablosundaki satır bilgi tutarlılığına ilişki satırları varsa ve bulunulan satırın üst tablosundan silinir olur belirtir. Eylem varsayılandır.

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

    Örneğin, AdventureWorks2012 veritabanı, ProductVendortablo vardır bilgi tutarlılığına ilişkisi olan Vendortablosu. ProductVendor.BusinessEntityIDYabancı anahtar başvuruları Vendor.BusinessEntityIDPRIMARY key.

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

    Buna karşılık, hayır eylem belirttiyseniz, Veritabanı Altyapısıhata yükseltir ve silme eylemi geri alır Vendorolduğu zaman en az bir satır satır ProductVendorgörüneceği şekilde başvuran tablo

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

  • Update { eylem }
    O sıralar bilgi tutarlılığına bir ilişki var ve başvurulan satır Ana tabloda güncelleştirilir oluşturulan tablo satırları ne olur belirtir. Hayır eylem belirtilen Veritabanı Altyapısıhata yükseltir ve Güncelleştir eylemi geri alır Vendorvarsa en az bir satır satır ProductVendorgörüneceği şekilde başvuran 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.

  • 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. KONTROL kısıtlamaları hesaplanmış sütunları da PERSISTED işaretlenmelidir.

  • logical_expression
    TRUE veya FALSE döndüren mantıksal bir ifadedir. İfade, bir diğer ad veri türü başvurusu içeremez.

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

    [!NOT]

    Bu bağlamda default bir 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. Daha fazla bilgi için, bkz. set QUOTED_IDENTIFIER (Transact-sql).

Açıklamalar

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.

Ayrıca bkz.

Başvuru

ALTER TABLE (Transact-SQL)