Quando crei una colonna calcolata in SQL Server, l'espressione usata per la colonna sarà deterministica o non deterministica. Ciò può avere implicazioni, ad esempio se puoi utilizzarlo o meno in un indice o contrassegnarlo come "persistito".
Una colonna deterministica è quella che restituirà lo stesso valore per un insieme specifico di valori di input e dato lo stesso stato del database. Una colonna non deterministica può restituire un valore diverso anche se viene fornito lo stesso input anche se lo stato del database rimane lo stesso. Ad esempio, una funzione che restituisce la data corrente non è deterministica, perché restituirà un valore diverso ogni giorno.
Puoi utilizzare COLUMNPROPERTY()
funzione con IsDeterministic
argomento per scoprire se una colonna calcolata è deterministica o meno.
Esempio
Ecco un esempio da dimostrare.
SELECT COLUMNPROPERTY( OBJECT_ID('dbo.Products'), 'TotalValue', 'IsDeterministic') AS IsDeterministic;
Risultato:
+-------------------+ | IsDeterministic | |-------------------| | 1 | +-------------------+
In questo caso il TotalValue
colonna da dbo.Products
la tabella è deterministico. In caso contrario, il risultato sarebbe 0
.
Il IsDeterministic
la proprietà si applica solo alle colonne calcolate e alle colonne della vista.