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.