This article demonstrates how to use T-SQL to add a computed column to an existing table in SQL Server.
A computed column is a virtual column that uses an expression to calculate its value. The expression will typically use data from other columns. A computed column is not physically stored in the table unless it’s marked PERSISTED.
Example 1 – Create a Table WITHOUT a Computed Column
First, let’s create a table without a computed column.
CREATE TABLE Products
(
ProductID int IDENTITY (1,1) NOT NULL,
ProductName varchar(255),
Quantity smallint,
Price money
);
INSERT INTO Products (ProductName, Quantity, Price)
VALUES
('Hammer', 5, 10),
('Corkscrew', 2, 7.50),
('Kettle', 3, 25.15);
SELECT *
FROM Products;
Result:
+-------------+---------------+------------+---------+ | ProductID | ProductName | Quantity | Price | |-------------+---------------+------------+---------| | 1 | Hammer | 5 | 10.0000 | | 2 | Corkscrew | 2 | 7.5000 | | 3 | Kettle | 3 | 25.1500 | +-------------+---------------+------------+---------+
Example 2 – Add a Computed Column
Now let’s add a computed column.
ALTER TABLE Products ADD TotalValue AS (Quantity * Price);
We’ve just added a computed column called TotalValue that multiplies the value in the Quantity column with the value in the Price column.
Here’s what happens when we select the table’s contents now:
SELECT * FROM Products;
Result:
+-------------+---------------+------------+---------+--------------+ | ProductID | ProductName | Quantity | Price | TotalValue | |-------------+---------------+------------+---------+--------------| | 1 | Hammer | 5 | 10.0000 | 50.0000 | | 2 | Corkscrew | 2 | 7.5000 | 15.0000 | | 3 | Kettle | 3 | 25.1500 | 75.4500 | +-------------+---------------+------------+---------+--------------+
Example 3 – Update a Value
Now, if a value is updated in the Quantity or Price columns, this will affect the total value returned by the computed column.
Example:
UPDATE Products SET Quantity = 4 WHERE ProductId = 1; SELECT * FROM Products;
Result:
+-------------+---------------+------------+---------+--------------+ | ProductID | ProductName | Quantity | Price | TotalValue | |-------------+---------------+------------+---------+--------------| | 1 | Hammer | 4 | 10.0000 | 40.0000 | | 2 | Corkscrew | 2 | 7.5000 | 15.0000 | | 3 | Kettle | 3 | 25.1500 | 75.4500 | +-------------+---------------+------------+---------+--------------+