sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo saber si una columna calculada es determinista en SQL Server

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.