Hesaplanan sütunlar

Hesaplanan bir sütunun diğer sütunları aynı şekilde kullanabileceğiniz bir ifadeden hesaplanan tablo.ifade noncomputed sütun adı, sabit, işlev ve bunlar tarafından bir veya daha çok işleç bağlı herhangi bir birleşimi olabilir.Alt sorgu ifade olamaz.

Örneğin, AdventureWorks2008R2 örnek veritabanı, TotalDue sütun , Sales.SalesOrderHeader Tablo tanım var: TotalDue as alt toplam + TaxAmt + nakliye.

Sütunlar: fiziksel olarak saklanan değil sanal sütunlar, aksi belirtilmediği sürece, hesaplanan tablo.Sorguda başvurulan her saat bunların değerleri yeniden hesaplanır.The Veritabanı Altyapısı uses the PERSISTED keyword in the CREATE TABLE and ALTER TABLE statements to physically store computed columns in the table.Kendi hesaplamasının bir parçası olan sütunları değiştirme değerlerine güncelleştirilir.PERSISTED olarak hesaplanan bir sütun olarak işaretlemek için deterministic ancak kesin olmayan hesaplanan sütun üzerinde dizin oluşturabilirsiniz.Ayrıca, hesaplanan sütun başvuran bir CLR işlev, Veritabanı Altyapısı gerçekten deterministic işlev olup olmadığını doğrulayamıyor.Bu durum, dizinler üzerinde oluşturulabilir böylece hesaplanan sütun kalıcı gerekir.Daha fazla bilgi için bkz: Dizinler üzerinde hesaplanan sütunlar oluşturma.

Not

Herhangi bir hesaplanan sütunları bölümleme olarak kullanılan sütunlar bir bölümlenmiş tablo açıkça kalıcı.

Hesaplanan sütunlar seçin listeleri, where yan tümceleri, order by yan tümceleri veya içinde normal ifadeler, aşağıdaki özel durumlar dışında kullanılabilecek diğer konumlarda kullanılabilir:

  • Hesaplanan sütunlar onay, yabancı anahtar veya null kısıtlamalarını PERSISTED işaretlenmemiş olması gerekir gibi kullanılabilir.hesaplanan sütun değeri deterministik tanımlanırsa, hesaplanan sütun bir anahtar sütununa bir dizin veya birincil anahtar veya benzersiz kısıtlama bir parçası olarak kullanılabilir ifade ve dizin sütunları sonuç veri türüne izin verilmez.

    INTEGER sütunları bir tablo varsa, örneğin, bir ve b, hesaplanan sütun bir + b , hesaplanmış sütunu dizine alınması için çok bir + datepart (dd, değer içinde izleyen çağırmaları değişebilir çünkü getdate()) oluşturulamaz.

  • hesaplanan sütun, bir INSERT veya update deyim işleminin hedef olamaz.

The Veritabanı Altyapısı automatically determines the nullability of computed columns based on the expressions used.Olası eksiklik veya taşıyor null sonuçlar üretecektir çünkü yalnızca nonnullable sütun varsa, çoğu deyimleri sonuç null olarak kabul edilir.columnproperty işlev ile kullanmak AllowsNull özelliği hesaplanan sütun boş değer özelliğini incelemek için bir tablo.An expression that is nullable can be turned into a nonnullable one by specifying ISNULL(check_expression**,** constant), where the constant is a nonnull value substituted for any null result.