Cet article montre comment utiliser T-SQL pour ajouter une colonne calculée à une table existante dans SQL Server.
Une colonne calculée est une colonne virtuelle qui utilise une expression pour calculer sa valeur. L'expression utilise généralement des données d'autres colonnes. Une colonne calculée n'est physiquement stockée dans la table que si elle est marquée PERSISTED
.
Exemple 1 - Créer une table SANS colonne calculée
Commençons par créer une table sans une colonne calculée.
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;
Résultat :
+-------------+---------------+------------+---------+ | ProductID | ProductName | Quantity | Price | |-------------+---------------+------------+---------| | 1 | Hammer | 5 | 10.0000 | | 2 | Corkscrew | 2 | 7.5000 | | 3 | Kettle | 3 | 25.1500 | +-------------+---------------+------------+---------+
Exemple 2 – Ajouter une colonne calculée
Ajoutons maintenant une colonne calculée.
ALTER TABLE Products ADD TotalValue AS (Quantity * Price);
Nous venons d'ajouter une colonne calculée appelée TotalValue
qui multiplie la valeur dans la Quantity
colonne avec la valeur dans le Price
colonne.
Voici ce qui se passe lorsque nous sélectionnons maintenant le contenu du tableau :
SELECT * FROM Products;
Résultat :
+-------------+---------------+------------+---------+--------------+ | 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 | +-------------+---------------+------------+---------+--------------+
Exemple 3 - Mettre à jour une valeur
Maintenant, si une valeur est mise à jour dans la Quantity
ou Price
colonnes, cela affectera la valeur totale renvoyée par la colonne calculée.
Exemple :
UPDATE Products SET Quantity = 4 WHERE ProductId = 1; SELECT * FROM Products;
Résultat :
+-------------+---------------+------------+---------+--------------+ | 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 | +-------------+---------------+------------+---------+--------------+