Bài viết này trình bày cách sử dụng T-SQL để thêm cột được tính toán vào bảng hiện có trong SQL Server.
Một cột được tính toán là một cột ảo sử dụng một biểu thức để tính giá trị của nó. Biểu thức thường sẽ sử dụng dữ liệu từ các cột khác. Một cột được tính toán không được lưu trữ vật lý trong bảng trừ khi nó được đánh dấu PERSISTED
.
Ví dụ 1 - Tạo Bảng KHÔNG CÓ Cột Tính toán
Trước tiên, hãy tạo một bảng không có một cột được tính toán.
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;
Kết quả:
+-------------+---------------+------------+---------+ | ProductID | ProductName | Quantity | Price | |-------------+---------------+------------+---------| | 1 | Hammer | 5 | 10.0000 | | 2 | Corkscrew | 2 | 7.5000 | | 3 | Kettle | 3 | 25.1500 | +-------------+---------------+------------+---------+
Ví dụ 2 - Thêm cột được tính toán
Bây giờ, hãy thêm một cột được tính toán.
ALTER TABLE Products ADD TotalValue AS (Quantity * Price);
Chúng tôi vừa thêm một cột được tính toán có tên là TotalValue
nhân giá trị trong Quantity
với giá trị trong Price
cột.
Đây là những gì sẽ xảy ra khi chúng tôi chọn nội dung của bảng ngay bây giờ:
SELECT * FROM Products;
Kết quả:
+-------------+---------------+------------+---------+--------------+ | 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í dụ 3 - Cập nhật giá trị
Bây giờ, nếu một giá trị được cập nhật trong Quantity
hoặc Price
, điều này sẽ ảnh hưởng đến tổng giá trị được trả về bởi cột được tính toán.
Ví dụ:
UPDATE Products SET Quantity = 4 WHERE ProductId = 1; SELECT * FROM Products;
Kết quả:
+-------------+---------------+------------+---------+--------------+ | 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 | +-------------+---------------+------------+---------+--------------+