Denne artikel viser, hvordan man bruger T-SQL til at tilføje en beregnet kolonne til en eksisterende tabel i SQL Server.
En beregnet kolonne er en virtuel kolonne, der bruger et udtryk til at beregne dens værdi. Udtrykket vil typisk bruge data fra andre kolonner. En beregnet kolonne gemmes ikke fysisk i tabellen, medmindre den er markeret med PERSISTED
.
Eksempel 1 – Opret en tabel UDEN en beregnet kolonne
Lad os først oprette en tabel uden en beregnet kolonne.
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 | +-------------+---------------+------------+---------+
Eksempel 2 – Tilføj en beregnet kolonne
Lad os nu tilføje en beregnet kolonne.
ALTER TABLE Products ADD TotalValue AS (Quantity * Price);
Vi har lige tilføjet en beregnet kolonne kaldet TotalValue
der multiplicerer værdien i Quantity
kolonne med værdien i Price
kolonne.
Her er, hvad der sker, når vi vælger tabellens indhold 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 | +-------------+---------------+------------+---------+--------------+
Eksempel 3 – Opdater en værdi
Hvis nu en værdi er opdateret i Quantity
eller Price
kolonner, vil dette påvirke den samlede værdi, der returneres af den beregnede kolonne.
Eksempel:
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 | +-------------+---------------+------------+---------+--------------+