2010-02-01 71 views
31

Làm thế nào để bạn thêm một ràng buộc duy nhất trong SQL Server 2005 vào hai cột? Vì vậy, cho phép nói rằng tôi có:SQL Server 2005 Ràng buộc duy nhất trên hai cột

PK, A, B ... 
x1 1 1 
x2 1 2 
x3 2 1 
x4 2 2 

tôi không nên có thể bổ sung thêm hàng 'x5' và có giá trị cho A và B là 1,1 khi họ đã có trong cơ sở dữ liệu trong x1?

Ok, chúng tôi đã cố gắng làm cho nó hoạt động và cảm ơn OMG. Chuyển đến chế độ xem bảng, chọn hai cột, nhấp chuột phải và chọn 'chỉ mục/khóa' - tab chung, chọn các cột bạn muốn là duy nhất và sau đó đặt 'là duy nhất' thành true. Đây là cách sử dụng trình thiết kế bảng.

Cảm ơn.

+0

Trùng lặp: http://stackoverflow.com/questions/2152176/unique-way-to-have-unique-rows-in-table –

+0

bạn đã xem ? – Rafael

Trả lời

35

Trong SQL Server, ràng buộc duy nhất thực sự được triển khai dưới dạng chỉ mục duy nhất. Sử dụng:

CREATE UNIQUE INDEX <uix_name> ON <table_name>(<col_A>, <col_B>) 

Để biết thêm thông tin, hãy xem this MSDN page.

+0

Vâng, chúng tôi quản lý điều này thông qua các nhà thiết kế bảng và nó làm việc, mát mẻ. – flavour404

+0

Tôi đồng ý với @adaTheDev và thêm ràng buộc bảng thay vì thêm chỉ mục duy nhất "thô". Tạo chỉ mục ngụ ý cải thiện hiệu suất có thể. Nhưng sau đó người ta có thể thả chỉ số này trước khi nhận ra rằng nó không có hiệu suất nhưng cho chức năng. Bạn sẽ không bao giờ thả một ràng buộc mà không nhận ra rằng hầu hết được phục vụ một số mục đích chức năng. (thừa nhận ràng buộc duy nhất tạo ra một kết thúc chỉ mục duy nhất nhưng nó không thể bị loại bỏ trực tiếp, chỉ bằng cách bỏ ràng buộc) –

+0

@Ralph Shillington: Một chỉ mục duy nhất cũng có thể có các cột INCLUDE. Một ràng buộc có thể không. Để biết thêm thông tin: http://stackoverflow.com/questions/2152176/unique-way-to-have-unique-rows-in-table –

37
ALTER TABLE YourTable 
ADD CONSTRAINT UQ_YourTable_ConstraintName UNIQUE(A, B) 
+0

Cú pháp nằm trong hộp ràng buộc là gì. Chúng tôi làm nổi bật hai cột, nhấp chuột phải vào 'ràng buộc' và đặt trong 'UNIQUE (DocType, PubID)' và nó sais rằng có một lỗi - 'lỗi xác nhận ràng buộc' – flavour404

+1

Dễ dàng hơn/nhanh hơn thậm chí đi vào nhà thiết kế bảng - chỉ mở một tab truy vấn mới trong SSMS và chạy SQL. – AdaTheDev

+0

+1 - ràng buộc duy nhất cho chiến thắng, nó cho ai đó biết đến hệ thống trong tương lai nhiều hơn một chỉ mục duy nhất. –

Các vấn đề liên quan