Когато създавате изчислена колона в SQL Server, изразът, който използвате за колоната, ще бъде или детерминиран, или недетерминиран. Това може да има последици, като например дали можете да го използвате или не в индекс или да го маркирате като „постоянен“.
Детерминираната колона е тази, която ще върне същата стойност за конкретен набор от входни стойности и при едно и също състояние на базата данни. Една недетерминирана колона може да върне различна стойност, дори когато е дадена една и съща информация, дори ако състоянието на базата данни остава същото. Например, функция, която връща текущата дата, е недетерминистична, защото всеки ден ще връща различна стойност.
Можете да използвате COLUMNPROPERTY()
функция с IsDeterministic
аргумент, за да разберете дали една изчислена колона е детерминирана.
Пример
Ето пример за демонстрация.
SELECT COLUMNPROPERTY( OBJECT_ID('dbo.Products'), 'TotalValue', 'IsDeterministic') AS IsDeterministic;
Резултат:
+-------------------+ | IsDeterministic | |-------------------| | 1 | +-------------------+
В този случай TotalValue
колона от dbo.Products
таблица е детерминистичен. Ако не беше, резултатът щеше да е 0
.
IsDeterministic
свойството се прилага само за изчислени колони и колони за изглед.