Tento článek ukazuje, jak použít T-SQL k vytvoření vypočítaného sloupce na serveru SQL.
Vypočítaný sloupec je virtuální sloupec, který používá výraz k výpočtu své hodnoty. Výraz bude obvykle používat data z jiných sloupců. Vypočítaný sloupec není v tabulce fyzicky uložen, pokud není označen PERSISTED
.
Příklad 1 – Vytvoření tabulky s vypočítaným sloupcem
Zde je příklad vytvoření tabulky s vypočítaným sloupcem, vložení dat a následný výběr obsahu tabulky.
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;
Výsledek:
+-------------+---------------+------------+---------+--------------+ | 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 | +-------------+---------------+------------+---------+--------------+
V tomto případě je posledním sloupcem vypočítaný sloupec. Vynásobí sloupec množství sloupcem ceny. To nám umožňuje získat celkovou hodnotu produktu, který je aktuálně skladem.
Příklad 2 – Vytvoření trvalého vypočítaného sloupce
Můžete vytvořit trvalý vypočítaný sloupec přidáním PERSISTED
argument. To bude mít za následek, že vypočítaná hodnota bude fyzicky uložena v tabulce. Pokud není trvalá, pak se hodnota vypočítá pokaždé, když čtete vypočítaný sloupec.
Zde je stejný příklad kódu jako předchozí, ale tentokrát vytvořím trvalý vypočítaný sloupec:
CREATE TABLE Products ( ProductID int IDENTITY (1,1) NOT NULL, ProductName varchar(255), Quantity smallint, Price money, TotalValue AS Quantity * Price PERSISTED );
Jediný rozdíl je PERSISTED
argument.
Příklad 3 – Aktualizace hodnoty
Nyní, pokud je hodnota aktualizována v Quantity
nebo Price
sloupců, ovlivní to celkovou hodnotu vrácenou vypočítaným sloupcem. K tomu dojde bez ohledu na to, zda je sloupec trvalý nebo ne.
Pokud si někdo koupí například kladivo, ovlivní to celkovou hodnotu vrácenou vypočteným sloupcem:
UPDATE Products SET Quantity = 4 WHERE ProductId = 1; SELECT * FROM Products;
Výsledek:
+-------------+---------------+------------+---------+--------------+ | 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 | +-------------+---------------+------------+---------+--------------+