Den här artikeln visar hur man använder T-SQL för att skapa en beräknad kolumn 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 med en beräknad kolumn
Här är ett exempel på att skapa en tabell med en beräknad kolumn, infoga data och sedan välja tabellens innehåll.
CREATE TABLE Products ( ProductID int IDENTITY (1,1) NOT NULL, ProductName varchar(255), Quantity smallint, Price money, TotalValue AS Quantity * Price ); 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 | TotalValue | |-------------+---------------+------------+---------+--------------| | 1 | Hammer | 5 | 10.0000 | 50.0000 | | 2 | Corkscrew | 2 | 7.5000 | 15.0000 | | 3 | Kettle | 3 | 25.1500 | 75.4500 | +-------------+---------------+------------+---------+--------------+
I det här fallet är den sista kolumnen en beräknad kolumn. Den multiplicerar kvantitetskolumnen med priskolumnen. Detta gör det möjligt för oss att få ett totalt värde av den produkt som för närvarande finns i lager.
Exempel 2 – Skapa en beständig beräknad kolumn
Du kan skapa en beständig beräknad kolumn genom att lägga till PERSISTED
argument. Detta kommer att resultera i att det beräknade värdet lagras fysiskt i tabellen. Om det inte kvarstår, beräknas värdet varje gång du läser den beräknade kolumnen.
Här är samma kodexempel som det föregående, förutom den här gången skapar jag en beständig beräknad kolumn:
CREATE TABLE Products ( ProductID int IDENTITY (1,1) NOT NULL, ProductName varchar(255), Quantity smallint, Price money, TotalValue AS Quantity * Price PERSISTED );
Den enda skillnaden är PERSISTED
argument.
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. Detta inträffar oavsett om kolumnen kvarstår eller inte.
Om någon köper en hammare till exempel, kommer detta att påverka det totala värdet som returneras av den beräknade kolumnen:
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 | +-------------+---------------+------------+---------+--------------+