Khi bạn tạo một cột được tính toán trong SQL Server, biểu thức bạn sử dụng cho cột sẽ là xác định hoặc không xác định. Điều này có thể có ý nghĩa, chẳng hạn như bạn có thể sử dụng nó trong một chỉ mục hay không hoặc gắn cờ nó là “vẫn tồn tại”.
Cột xác định là cột sẽ trả về cùng một giá trị cho một tập hợp giá trị đầu vào cụ thể và có cùng trạng thái của cơ sở dữ liệu. Một cột không xác định có thể trả về một giá trị khác ngay cả khi được cung cấp cùng một đầu vào ngay cả khi trạng thái cơ sở dữ liệu vẫn giữ nguyên. Ví dụ:một hàm trả về ngày hiện tại là không xác định, vì nó sẽ trả về một giá trị khác nhau mỗi ngày.
Bạn có thể sử dụng COLUMNPROPERTY()
hàm với IsDeterministic
để tìm hiểu xem một cột được tính có xác định hay không.
Ví dụ
Đây là một ví dụ để chứng minh.
SELECT COLUMNPROPERTY( OBJECT_ID('dbo.Products'), 'TotalValue', 'IsDeterministic') AS IsDeterministic;
Kết quả:
+-------------------+ | IsDeterministic | |-------------------| | 1 | +-------------------+
Trong trường hợp này, TotalValue
từ dbo.Products
bảng là xác định. Nếu không, kết quả sẽ là 0
.
IsDeterministic
thuộc tính chỉ áp dụng cho các cột được tính toán và cột chế độ xem.