Kolumny obliczane

Kolumna obliczana jest obliczana z wyrażenie można użyć innych kolumn w jednej tabela.Wyrażenie może być nazwa kolumna noncomputed, stała, funkcja i dowolnej kombinacji tych połączenia przez operatorów jednego lub więcej.Wyrażenie nie może być podzapytanie.

Na przykład w AdventureWorks2008R2 Przykładowa baza danych, TotalDue kolumna Sales.SalesOrderHeader tabela zawiera definicję: TotalDue jako Suma częściowa + TaxAmt + Transport.

Chyba że ustalono inaczej, kolumny obliczane są wirtualne kolumn, które nie są fizycznie przechowywane w tabela.Ich wartości są obliczane ponownie co czas się do kwerendy. Aparat baz danych Wykorzystuje słowo kluczowe PERSISTED w instrukcji CREATE tabela i ALTER tabela fizycznie przechowywane obliczanej kolumny w tabela.Ich wartości są aktualizowane podczas zmiany żadnych kolumn, stanowiących część ich obliczania.Oznaczając kolumna obliczana jako PERSISTED, można utworzyć indeks w kolumna obliczana jest deterministyczny, ale nie dokładne.Ponadto, jeśli kolumna obliczana odwołuje się funkcja CLR, Aparat baz danych nie może sprawdzić, czy funkcja jest naprawdę deterministyczny.W tym przypadek, być UTRWALONE kolumna obliczana, tak, aby indeksy mogą być tworzone na nim.Aby uzyskać więcej informacji, zobacz Tworzenie indeksów kolumny obliczanej.

Ostrzeżenie

Obliczone żadnych kolumn, które są używane jako partycjonowanie kolumny tabela podzielonym na partycje należy jawnie utrwalone.

Kolumny obliczane mogą być używane w listach wybierz, gdzie klauzule, klauzul ORDER BY lub inne lokalizacje, w których wyrażenia regularne mogą być używane, z następującymi wyjątkami:

  • Obliczona kolumn używanych jako wyboru, klucz OBCY lub nie NULL ograniczenia muszą być oznaczone PERSISTED.Kolumna obliczana może służyć jako kolumnę klucza w indeksie lub jako część wszelkie ograniczenia na klucz podstawowy lub unikatowe wartość kolumny obliczanej jest zdefiniowane przez wyrażenie przewidywalne i typu danych wyniku jest dozwolony w kolumny indeksu.

    Na przykład, jeśli tabela zawiera kolumna całkowitą i b, kolumna obliczana + b mogą być indeksowane, ale kolumna obliczana + DATEPART (dd, GETDATE()) nie mogą być indeksowane, ponieważ wartość może się zmieniać w kolejnych wywołania.

  • A kolumna obliczana nie może być miejsce docelowe instrukcja INSERT lub UPDATE.

Aparat baz danych Automatycznie określa opcje dopuszczania wartości null oparte na wyrażeniach używane kolumny obliczane.Wynik wyrażenia większości uznaje się za nullable nawet, jeśli tylko nonnullable kolumny są obecne, ponieważ możliwe niedopełnienie lub dłuższa będzie powodować również wyniki null.Użyj funkcja COLUMNPROPERTY z AllowsNull właściwość zbadanie opcje dopuszczania wartości null wszelkich kolumna obliczana w tabela.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.