Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come sapere se una colonna calcolata è deterministica in SQL Server

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.