Den här artikeln visar hur man använder T-SQL för att lägga till en beräknad kolumn till en befintlig tabell i SQL Server.
En beräknad kolumn är en virtuell kolumn som använder ett uttryck för att beräkna dess värde. Uttrycket kommer vanligtvis att använda data från andra kolumner. En beräknad kolumn lagras inte fysiskt i tabellen om den inte är markerad med PERSISTED
.
Exempel 1 – Skapa en tabell UTAN en beräknad kolumn
Låt oss först skapa en tabell utan en beräknad kolumn.
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;
Resultat:
+-------------+---------------+------------+---------+ | ProductID | ProductName | Quantity | Price | |-------------+---------------+------------+---------| | 1 | Hammer | 5 | 10.0000 | | 2 | Corkscrew | 2 | 7.5000 | | 3 | Kettle | 3 | 25.1500 | +-------------+---------------+------------+---------+
Exempel 2 – Lägg till en beräknad kolumn
Låt oss nu lägga till en beräknad kolumn.
ALTER TABLE Products ADD TotalValue AS (Quantity * Price);
Vi har precis lagt till en beräknad kolumn som heter TotalValue
som multiplicerar värdet i Quantity
kolumnen med värdet i Price
kolumn.
Så här händer när vi väljer tabellens innehåll nu:
SELECT * FROM Products;
Resultat:
+-------------+---------------+------------+---------+--------------+ | 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 | +-------------+---------------+------------+---------+--------------+
Exempel 3 – Uppdatera ett värde
Nu, om ett värde uppdateras i Quantity
eller Price
kolumner, kommer detta att påverka det totala värdet som returneras av den beräknade kolumnen.
Exempel:
UPDATE Products SET Quantity = 4 WHERE ProductId = 1; SELECT * FROM Products;
Resultat:
+-------------+---------------+------------+---------+--------------+ | 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 | +-------------+---------------+------------+---------+--------------+