Khi bạn tạo một cột được tính toán trong SQL Server, bạn có tùy chọn gắn cờ cột đó là "vẫn tồn tại". Cột được tính liên tục là cột được lưu trữ vật lý trong bảng. Nếu bạn không chỉ rõ rằng cột đó vẫn tồn tại, thì giá trị của cột sẽ được tính toán mỗi khi bạn chạy một truy vấn dựa trên nó.
Bạn có thể truy vấn sys.computed_columns
chế độ xem danh mục hệ thống để tìm hiểu xem một cột được tính toán có được đánh dấu là tồn tại hay không.
Ví dụ 1 - Kiểm tra một cột được tính
Đây là một ví dụ mà tôi đã chạy trong môi trường thử nghiệm của mình. Trong trường hợp này, tôi đang kiểm tra một cột được tính toán có tên là TotalValue
.
SELECT is_persisted FROM sys.computed_columns WHERE name = 'TotalValue';
Kết quả:
+----------------+ | is_persisted | |----------------| | 1 | +----------------+
Trong trường hợp này, cột là vẫn tồn tại.
Trong trường hợp bạn có nhiều cột được tính có cùng tên, bạn cũng có thể thêm tên bảng vào WHERE
mệnh đề:
SELECT is_persisted FROM sys.computed_columns WHERE name = 'TotalValue' AND OBJECT_NAME(object_id) = 'Products';
Ví dụ 2 - Trả lại Tất cả các Cột được Tính toán
Trong ví dụ này, tôi trả về tất cả các cột được tính toán, cùng với is_persisted
của chúng giá trị.
SELECT OBJECT_NAME(object_id) AS [Table], name AS [Computed Column], is_persisted FROM sys.computed_columns;
Kết quả:
+----------+-------------------+----------------+ | Table | Computed Column | is_persisted | |----------+-------------------+----------------| | Person | FullName | 0 | | Products | TotalValue | 1 | +----------+-------------------+----------------+
Ví dụ 3 - Bao gồm Lược đồ
Trong ví dụ này, tôi kết hợp với sys.objects
xem để đưa lược đồ vào kết quả.
SELECT SCHEMA_NAME(o.schema_id) AS [Schema], OBJECT_NAME(cc.object_id) AS [Table], cc.name AS [Computed Column], cc.is_persisted FROM sys.computed_columns cc INNER JOIN sys.objects o ON o.object_id = cc.object_id;
Kết quả:
+----------+----------+-------------------+----------------+ | Schema | Table | Computed Column | is_persisted | |----------+----------+-------------------+----------------| | dbo | Person | FullName | 0 | | dbo | Products | TotalValue | 1 | +----------+----------+-------------------+----------------+