Cuando crea una columna calculada en SQL Server, tiene la opción de marcarla como "persistente". Una columna calculada persistente es aquella que se almacena físicamente en la tabla. Si no especifica que se conserva, el valor de la columna se calculará cada vez que ejecute una consulta en ella.
Puede consultar el sys.computed_columns
vista de catálogo del sistema para averiguar si una columna calculada está marcada como persistente.
Ejemplo 1:comprobación de una columna calculada
Aquí hay un ejemplo que ejecuté en mi entorno de prueba. En este caso, estoy revisando una columna calculada llamada TotalValue
.
SELECT is_persisted FROM sys.computed_columns WHERE name = 'TotalValue';
Resultado:
+----------------+ | is_persisted | |----------------| | 1 | +----------------+
En este caso la columna es persistió.
En caso de que tenga varias columnas calculadas con el mismo nombre, también puede agregar el nombre de la tabla a WHERE
cláusula:
SELECT is_persisted FROM sys.computed_columns WHERE name = 'TotalValue' AND OBJECT_NAME(object_id) = 'Products';
Ejemplo 2:devolver todas las columnas calculadas
En este ejemplo, devuelvo todas las columnas calculadas, junto con su is_persisted
valores.
SELECT OBJECT_NAME(object_id) AS [Table], name AS [Computed Column], is_persisted FROM sys.computed_columns;
Resultado:
+----------+-------------------+----------------+ | Table | Computed Column | is_persisted | |----------+-------------------+----------------| | Person | FullName | 0 | | Products | TotalValue | 1 | +----------+-------------------+----------------+
Ejemplo 3:incluir el esquema
En este ejemplo me uno con el sys.objects
vista para incluir el esquema en los resultados.
SELECT SCHEMA_NAME(o.schema_id) AS [Schema], OBJECT_NAME(cc.object_id) AS [Table], cc.name AS [Computed Column], cc.is_persisted FROM sys.computed_columns cc INNER JOIN sys.objects o ON o.object_id = cc.object_id;
Resultado:
+----------+----------+-------------------+----------------+ | Schema | Table | Computed Column | is_persisted | |----------+----------+-------------------+----------------| | dbo | Person | FullName | 0 | | dbo | Products | TotalValue | 1 | +----------+----------+-------------------+----------------+