Cuando crea una columna calculada en SQL Server, la expresión que usa para la columna será determinista o no determinista. Esto puede tener implicaciones, como si puede usarlo o no en un índice o marcarlo como "persistente".
Una columna determinista es aquella que devolverá el mismo valor para un conjunto específico de valores de entrada y dado el mismo estado de la base de datos. Una columna no determinista puede devolver un valor diferente incluso cuando se le da la misma entrada, incluso si el estado de la base de datos sigue siendo el mismo. Por ejemplo, una función que devuelve la fecha actual no es determinista, porque devolverá un valor diferente cada día.
Puedes usar la COLUMNPROPERTY()
función con IsDeterministic
argumento para averiguar si una columna calculada es o no determinista.
Ejemplo
Aquí hay un ejemplo para demostrarlo.
SELECT COLUMNPROPERTY( OBJECT_ID('dbo.Products'), 'TotalValue', 'IsDeterministic') AS IsDeterministic;
Resultado:
+-------------------+ | IsDeterministic | |-------------------| | 1 | +-------------------+
En este caso el TotalValue
columna de dbo.Products
tabla es determinista Si no fuera así, el resultado sería 0
.
El IsDeterministic
La propiedad solo se aplica a las columnas calculadas y las columnas de vista.