2009-10-19 71 views
33

Tôi có một bảng đơn giản trong cơ sở dữ liệu SQL Server của mình. Bảng này chứa hai cột: ID int, Name nvarchar(50). Cột ID là khóa chính cho bảng của tôi.Làm cách nào để tạo cột "Không trùng lặp" trong SQL Server 2008?

Tôi muốn cột "Name" là "(No Duplicates)", như trong Microsoft Access, Nhưng cột này không phải là cột chính. Làm thế nào tôi có thể làm điều này?

+3

Xin vui lòng không quay trở lại những thay đổi cho thẻ của bạn - Câu hỏi này không phải là về Microsoft Access, mà là những ràng buộc duy nhất trên SQL Server. –

Trả lời

78

Thêm một unique constraint cho cột rằng:

ALTER TABLE Foo ADD CONSTRAINT UQ_Name UNIQUE (Name) 

Để thêm nó thông qua SQL Management Studio UI:

  1. mở SQL Server Management Studio.
  2. Mở rộng thư mục Bảng của cơ sở dữ liệu mà bạn muốn tạo ràng buộc.
  3. Nhấp chuột phải vào bảng nơi bạn muốn thêm ràng buộc và nhấp vào Thiết kế.
  4. Trong Trình thiết kế bảng, nhấp vào Chỉ mục/khóa.
  5. Nhấp vào Thêm.
  6. Chọn Khóa duy nhất trong danh sách thả xuống Loại.

Để xử lý tình huống xảy ra vi phạm ràng buộc duy nhất, hãy xem error 2601.

+1

liên kết là dành cho Sql Server 2000 và hướng dẫn cho SSMS không áp dụng cho phiên bản mới nhất theo như tôi thấy. – nycdan

+0

+1 cho giải pháp .. Tôi đã thực hiện tương tự và tôi không thể chèn giá trị trùng lặp. Nhưng giá trị khóa chính bị mất cho mỗi lần thử của tôi ... có nghĩa là nếu PK của tôi là 1 và tôi đang cố chèn một giá trị trùng lặp hai lần. Bản cập nhật chính xác tiếp theo sẽ là của PK 4. Làm thế nào tôi có thể tránh được nó? – rinuthomaz

+0

Tôi thích câu trả lời này cho giải pháp GUI mà tôi đã đăng vì nó thực sự đơn giản hơn và nhanh hơn nhưng tôi vẫn đăng cho những người có sở thích GUI mạnh mẽ. –

7

này cũng có thể được thực hiện một cách khác với SSMS GUI nếu bạn thích:

  1. Nhấp chuột phải "chỉ số" dưới bàn của bạn trong SSMS Solution Explorer và bấm vào nút "New Index ..." (Tôi biết bạn đang tìm kiếm để tạo ra một contstraint, không phải là một chỉ số, nhưng đây là chính xác những gì kịch bản ADD CONSTRAINT SQL hiện.

enter image description here

  1. Give chỉ số mới một tên (ví dụ. "UQ_MyUniqueColumn"), kiểm tra "Duy nhất", và bấm vào nút "Add ..."

enter image description here

  1. Kiểm tra cột của bạn trong cửa sổ tiếp theo

enter image description here

  1. Bấm OK trong cả hai cửa sổ
Các vấn đề liên quan