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.