Biểu tượng chìa khóa bạc lộn ngược này là gì


11

Tôi đã kế thừa máy chủ và cơ sở dữ liệu của bên thứ ba SQL Server 2005 để xem xét để có thể tạo báo cáo và bảng điều khiển trên đó.

Trên một cái bàn, tôi tìm thấy một biểu tượng mới: một phím lộn ngược màu xanh bạc, cùng với các khóa chính và khóa ngoài khác của tôi.

Khi tôi nhấp chuột phải vào nó, menu ngữ cảnh cung cấp cho tôi tùy chọn "Ràng buộc tập lệnh là", nhưng khi tôi cố gắng "Sửa đổi" nó, nó sẽ mở biểu mẫu thiết kế cột (như các khóa chính), tuy nhiên, nó xuất hiện trong Phần "Chỉ mục", không ràng buộc.

Ai đó biết nó được gọi là gì và dùng để làm gì?

Phím lộn ngược

Câu trả lời:


12

Đó 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 Indexesnú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 Constraintsnú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);

nhập mô tả hình ảnh ở đây 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):

nhập mô tả hình ảnh ở đây 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 .


1
Nó có đặc trưng cho SQL2005 không? Bởi vì khi tôi cố gắng thêm một chỉ mục ĐỘC ĐÁO, tôi nhận được một biểu tượng khác (một loại cây đảo ngược). Và khi tôi thêm một ràng buộc, tôi nhận được một số loại biểu tượng bảng vuông. Tôi dường như không thể tái tạo biểu tượng này.
Philippe

@Philippe Cập nhật câu trả lời.
Aaron Bertrand

Cảm ơn. Đó là một lời giải thích bừa bãi, và một cách nhanh chóng! :-)
Philippe
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.