Podczas tworzenia kolumny wyliczanej w programie SQL Server wyrażenie użyte dla kolumny będzie deterministyczne lub niedeterministyczne. Może to mieć konsekwencje, takie jak to, czy możesz użyć go w indeksie lub oznaczyć go jako „utrwalony”.
Kolumna deterministyczna to taka, która zwróci tę samą wartość dla określonego zestawu wartości wejściowych i otrzyma taki sam stan bazy danych. Kolumna niedeterministyczna może zwrócić inną wartość, nawet jeśli ma te same dane wejściowe, nawet jeśli stan bazy danych pozostaje taki sam. Na przykład funkcja zwracająca bieżącą datę jest niedeterministyczna, ponieważ każdego dnia zwróci inną wartość.
Możesz użyć COLUMNPROPERTY() funkcja z IsDeterministic argument, aby dowiedzieć się, czy obliczona kolumna jest deterministyczna.
Przykład
Oto przykład do zademonstrowania.
SELECT
COLUMNPROPERTY(
OBJECT_ID('dbo.Products'),
'TotalValue',
'IsDeterministic')
AS IsDeterministic;
Wynik:
+-------------------+ | IsDeterministic | |-------------------| | 1 | +-------------------+
W tym przypadku TotalValue kolumna z dbo.Products tabela jest deterministyczny. Gdyby tak nie było, wynik byłby 0 .
IsDeterministic właściwość dotyczy tylko kolumn obliczanych i kolumn widoku.