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 | +-------------+---------------+------------+---------+--------------+