Trong SQL Server, có thể có một KHÓA CHÍNH trên bảng mà không có các chỉ mục CLUSTERED hoặc NONCLUSTERED trên cùng một khóa không?


7

Trong Sql Server (2008), có thể có PRIMARY KEYmột tập hợp các cột mà không có CLUSTEREDhoặc NONCLUSTEREDchỉ mục trên cùng một tập hợp các cột không?

Tôi nhận thức được thực tế rằng PRIMARY KEYCLUSTERED INDEXchìa khóa là những khái niệm riêng biệt và chúng ta có thể tạo ra PRIMARY KEYmà không cần CLUSTERED INDEXđến nó (xem bên dưới).

ALTER TABLE dbo.Sample 
ADD CONSTRAINT PK_Sample_SeqGUID_Col1 PRIMARY KEY NONCLUSTERED (SeqGUID_Col1)

Nhưng câu hỏi của tôi là để xem liệu có thể tạo PRIMARY KEYtrên một bảng mà không có CLUSTEREDhoặc NONCLUSTEREDchỉ mục trên đó không.


Cảm ơn Mark đã chỉnh sửa. Tôi sẽ ghi nhớ những điểm đó cho bài viết tiếp theo của tôi.
UB01

Câu trả lời:


12

Tóm lại, không. Theo định nghĩa, khóa chính yêu cầu tính duy nhất, một chỉ mục trên trường khóa chính là tuyến công cụ cơ sở dữ liệu để thực thi ràng buộc này.

Từ BOL :

Khi bạn chỉ định ràng buộc CHÍNH CHÍNH cho bảng, Công cụ cơ sở dữ liệu sẽ thực thi tính duy nhất của dữ liệu bằng cách tạo một chỉ mục duy nhất cho các cột khóa chính. Chỉ mục này cũng cho phép truy cập nhanh vào dữ liệu khi khóa chính được sử dụng trong các truy vấn. Do đó, các khóa chính được chọn phải tuân theo các quy tắc để tạo các chỉ mục duy nhất.


8

Không, một ràng buộc khóa chính luôn được thi hành trong SQL-Server bởi một chỉ mục duy nhất. Chỉ số có thể được nhóm hoặc không bao gồm. Nếu bạn không chỉ định loại nào, mặc định là CLUSTEREDcho khóa chính. Từ tài liệu MSDN ,CREATE TABLE :

CLUSTERED | NONCLUSTERED

Chỉ ra rằng một chỉ mục được nhóm hoặc không bao gồm được tạo cho PRIMARY KEYhoặc UNIQUEràng buộc. PRIMARY KEYcác ràng buộc mặc định CLUSTEREDvà các UNIQUEràng buộc mặc định NONCLUSTERED.

Trong một CREATE TABLEtuyên bố, CLUSTEREDcó thể được chỉ định cho một ràng buộc. Nếu CLUSTEREDđược chỉ định cho một UNIQUEràng buộc và một PRIMARY KEYràng buộc cũng được chỉ định, PRIMARY KEYmặc định là NONCLUSTERED.

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.