Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment savoir si une colonne calculée est déterministe dans SQL Server

Lorsque vous créez une colonne calculée dans SQL Server, l'expression que vous utilisez pour la colonne sera déterministe ou non déterministe. Cela peut avoir des implications, par exemple si vous pouvez ou non l'utiliser dans un index ou le marquer comme "persistant".

Une colonne déterministe est une colonne qui renverra la même valeur pour un ensemble spécifique de valeurs d'entrée et compte tenu du même état de la base de données. Une colonne non déterministe peut renvoyer une valeur différente même lorsqu'elle reçoit la même entrée, même si l'état de la base de données reste le même. Par exemple, une fonction qui renvoie la date actuelle est non déterministe, car elle renverra une valeur différente chaque jour.

Vous pouvez utiliser le COLUMNPROPERTY() fonction avec le IsDeterministic argument pour savoir si une colonne calculée est déterministe ou non.

Exemple

Voici un exemple pour illustrer.

SELECT 
  COLUMNPROPERTY(
    OBJECT_ID('dbo.Products'), 
    'TotalValue', 
    'IsDeterministic') 
    AS IsDeterministic;

Résultat :

+-------------------+
| IsDeterministic   |
|-------------------|
| 1                 |
+-------------------+

Dans ce cas, la TotalValue colonne de dbo.Products la table est déterministe. Si ce n'était pas le cas, le résultat serait 0 .

Le IsDeterministic s'applique uniquement aux colonnes calculées et aux colonnes de vue.