Questo articolo illustra come utilizzare T-SQL per aggiungere una colonna calcolata a una tabella esistente in SQL Server.
Una colonna calcolata è una colonna virtuale che usa un'espressione per calcolarne il valore. L'espressione utilizzerà in genere i dati di altre colonne. Una colonna calcolata non viene archiviata fisicamente nella tabella a meno che non sia contrassegnata con PERSISTED
.
Esempio 1:creare una tabella SENZA una colonna calcolata
Per prima cosa, creiamo una tabella senza una colonna calcolata.
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;
Risultato:
+-------------+---------------+------------+---------+ | ProductID | ProductName | Quantity | Price | |-------------+---------------+------------+---------| | 1 | Hammer | 5 | 10.0000 | | 2 | Corkscrew | 2 | 7.5000 | | 3 | Kettle | 3 | 25.1500 | +-------------+---------------+------------+---------+
Esempio 2:aggiungere una colonna calcolata
Ora aggiungiamo una colonna calcolata.
ALTER TABLE Products ADD TotalValue AS (Quantity * Price);
Abbiamo appena aggiunto una colonna calcolata chiamata TotalValue
che moltiplica il valore nella Quantity
colonna con il valore nel Price
colonna.
Ecco cosa succede quando selezioniamo il contenuto della tabella ora:
SELECT * FROM Products;
Risultato:
+-------------+---------------+------------+---------+--------------+ | 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 | +-------------+---------------+------------+---------+--------------+
Esempio 3:aggiornamento di un valore
Ora, se un valore viene aggiornato nella Quantity
o Price
colonne, ciò influirà sul valore totale restituito dalla colonna calcolata.
Esempio:
UPDATE Products SET Quantity = 4 WHERE ProductId = 1; SELECT * FROM Products;
Risultato:
+-------------+---------------+------------+---------+--------------+ | 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 | +-------------+---------------+------------+---------+--------------+