Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách kiểm tra xem một cột được tính toán có "Cố định" trong SQL Server hay không

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể kết nối với máy chủ - Một lỗi liên quan đến mạng hoặc trường hợp cụ thể

  2. Cách sys.dm_exec_describe_first_result_set hoạt động trong SQL Server

  3. chuyển đổi Số sê-ri Ngày trong Excel thành Ngày Thông thường

  4. Thêm mệnh đề WHERE vào SQL động / lập trình

  5. SQL Server - Truy vấn ngắn mạch?