Una
columna calculada es una columna virtual que no se almacena físicamente en la
tabla, a menos que la columna esté marcada como PERSISTA. Una expresión de
columna calculada puede usar datos de otras columnas para calcular un valor
para la columna a la que pertenece.
Limitaciones:
- Una columna calculada no se puede usar como una definición de restricción DEFAULT o FOREIGN KEY o con una definición de restricción NOT NULL. Sin embargo, si el valor de la columna calculada se define mediante una expresión determinista y el tipo de datos del resultado está permitido en las columnas de índice, una columna calculada puede usarse como una columna clave en un índice o como parte de cualquier restricción PRIMARY KEY o UNIQUE. Por ejemplo, si la tabla tiene columnas enteras a y b, la columna calculada a + b puede indexarse, pero la columna calculada a + DATEPART (dd, GETDATE ()) no puede indexarse, porque el valor puede cambiar en invocaciones posteriores.
- Una columna calculada no puede ser el objetivo de una instrucción INSERT o UPDATE.
Caso
práctico:
Creamos
una tabla:
CREATE TABLE SALES_ORDERS (
SALE_ID INT IDENTITY(1,1),
PRODUCT_ID INT,
QUANTITY INT,
PRICE MONEY,
SALES_DATE DATETIME,
TOTAL_SALE_AMOUNT AS (QUANTITY * PRICE)
Tenga en cuenta que TOTAL_SALE_AMOUNT es una columna calculada que se calcula automáticamente cada vez que se hace referencia en una instrucción SELECT
SELECT OBJECT_NAME(OBJECT_ID) AS TABLE_NAME,NAME AS COLUMN_NAME,DEFINITION
FROM SYS.COMPUTED_COLUMNS
Ingresamos
datos en nuestra tabla
([PRODUCT_ID]
,[QUANTITY]
,[PRICE]
,[SALES_DATE])
VALUES (2,10,3,getdate())
En
la columna calculada automáticamente se inserta el dato de acuerdo a la
definición de la columna.
Si
consultamos la tabla:
SELECT * FROM SALES_ORDERS
12
ResponderEliminar