Đó là một ràng buộc độc đáo. Trong SQL Server, một ràng buộc duy nhất thực sự được triển khai như một chỉ mục dưới vỏ bọc; đây cũng là lý do tại sao nó xuất hiện dưới Indexes
nút (Tôi không thể giải thích rõ cho bạn về lý do tại sao nó không được liệt kê dưới Constraints
nút, cũng như tại sao họ chọn phím lộn ngược thay vì chỉ có màu khác).
Bạn sẽ thấy một kết quả ở đây để xác thực rằng điều này thực sự được thực hiện như một chỉ mục:
SELECT index_id, type_desc, is_unique_constraint
FROM sys.indexes
WHERE name = N'IX_tblCustIndex';
Bạn nói rằng bạn đã thấy "Ràng buộc tập lệnh là ..." - nếu bạn tiếp tục với nó, nó sẽ cung cấp cho bạn một tập lệnh giống như:
ALTER TABLE [dbo].[tblCustIndex] ADD UNIQUE NONCLUSTERED
(
[some_column] ASC
) WITH (...a bunch of default options...)
Nhưng đừng chạy nó bởi vì cú pháp này không sử dụng tên và nó sẽ chỉ tạo ra một ràng buộc duy nhất thứ hai, dư thừa ...
Đây là một repro rất đơn giản và bằng chứng là tôi có được phím lộn ngược ngay cả với cú pháp rất cơ bản, vào năm 2014:
CREATE TABLE dbo.foo(id INT UNIQUE);
bấm vào để phóng to
Bây giờ, bạn có thể nhận được một biểu tượng khác nếu bạn tạo một chỉ mục duy nhất một cách rõ ràng (và sự khác biệt duy nhất bạn sẽ thấy trong sys.indexes
là tên và giá trị của is_unique_constraint
):
bấm vào để phóng to
Đối với sự khác biệt khác xem câu trả lời Stack Overflow này .