W tym artykule pokazano, jak używać T-SQL do dodawania obliczonej kolumny do istniejącej tabeli w SQL Server.
kolumna obliczona to wirtualna kolumna, która używa wyrażenia do obliczenia swojej wartości. Wyrażenie zazwyczaj używa danych z innych kolumn. Obliczona kolumna nie jest fizycznie przechowywana w tabeli, chyba że jest oznaczona jako PERSISTED
.
Przykład 1 – Utwórz tabelę BEZ kolumny obliczonej
Najpierw utwórzmy stół bez kolumna obliczeniowa.
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;
Wynik:
+-------------+---------------+------------+---------+ | ProductID | ProductName | Quantity | Price | |-------------+---------------+------------+---------| | 1 | Hammer | 5 | 10.0000 | | 2 | Corkscrew | 2 | 7.5000 | | 3 | Kettle | 3 | 25.1500 | +-------------+---------------+------------+---------+
Przykład 2 – Dodaj kolumnę wyliczaną
Teraz dodajmy kolumnę obliczeniową.
ALTER TABLE Products ADD TotalValue AS (Quantity * Price);
Właśnie dodaliśmy obliczoną kolumnę o nazwie TotalValue
która mnoży wartość w Quantity
kolumna z wartością w Price
kolumna.
Oto, co się stanie, gdy teraz wybierzemy zawartość tabeli:
SELECT * FROM Products;
Wynik:
+-------------+---------------+------------+---------+--------------+ | 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 | +-------------+---------------+------------+---------+--------------+
Przykład 3 – Aktualizacja wartości
Teraz, jeśli wartość zostanie zaktualizowana w Quantity
lub Price
kolumn, wpłynie to na całkowitą wartość zwróconą przez obliczoną kolumnę.
Przykład:
UPDATE Products SET Quantity = 4 WHERE ProductId = 1; SELECT * FROM Products;
Wynik:
+-------------+---------------+------------+---------+--------------+ | 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 | +-------------+---------------+------------+---------+--------------+