Dieser Artikel demonstriert die Verwendung von T-SQL zum Erstellen einer berechneten Spalte in SQL Server.
Eine berechnete Spalte ist eine virtuelle Spalte, die einen Ausdruck verwendet, um ihren Wert zu berechnen. Der Ausdruck verwendet normalerweise Daten aus anderen Spalten. Eine berechnete Spalte wird nicht physisch in der Tabelle gespeichert, es sei denn, sie ist mit PERSISTED
gekennzeichnet .
Beispiel 1 – Erstellen Sie eine Tabelle mit einer berechneten Spalte
Hier ist ein Beispiel für das Erstellen einer Tabelle mit einer berechneten Spalte, das Einfügen von Daten und das anschließende Auswählen des Inhalts der Tabelle.
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;
Ergebnis:
+-------------+---------------+------------+---------+--------------+ | 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 | +-------------+---------------+------------+---------+--------------+
In diesem Fall ist die letzte Spalte eine berechnete Spalte. Es multipliziert die Mengenspalte mit der Preisspalte. Dadurch können wir den Gesamtwert des derzeit auf Lager befindlichen Produkts ermitteln.
Beispiel 2 – Erstellen einer persistenten berechneten Spalte
Sie können eine persistente berechnete Spalte erstellen, indem Sie PERSISTED
hinzufügen Streit. Dies führt dazu, dass der berechnete Wert physisch in der Tabelle gespeichert wird. Wenn er nicht beibehalten wird, wird der Wert jedes Mal berechnet, wenn Sie die berechnete Spalte lesen.
Hier ist das gleiche Codebeispiel wie im vorherigen, außer dass ich dieses Mal eine persistente berechnete Spalte erstelle:
CREATE TABLE Products ( ProductID int IDENTITY (1,1) NOT NULL, ProductName varchar(255), Quantity smallint, Price money, TotalValue AS Quantity * Price PERSISTED );
Der einzige Unterschied ist der PERSISTED
Argument.
Beispiel 3 – Aktualisieren eines Werts
Jetzt, wenn ein Wert in der Quantity
aktualisiert wird oder Price
Spalten, wirkt sich dies auf den von der berechneten Spalte zurückgegebenen Gesamtwert aus. Dies geschieht unabhängig davon, ob die Spalte beibehalten wird oder nicht.
Wenn jemand beispielsweise einen Hammer kauft, wirkt sich dies auf den Gesamtwert aus, der von der berechneten Spalte zurückgegeben wird:
UPDATE Products SET Quantity = 4 WHERE ProductId = 1; SELECT * FROM Products;
Ergebnis:
+-------------+---------------+------------+---------+--------------+ | 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 | +-------------+---------------+------------+---------+--------------+