2008-09-15 40 views

Trả lời

270

Lệnh SQL là:

ALTER TABLE <tablename> ADD CONSTRAINT 
      <constraintname> UNIQUE NONCLUSTERED 
    (
       <columnname> 
    ) 

Xem toàn bộ cú pháp here.

Nếu bạn muốn làm điều đó từ một Sơ đồ cơ sở dữ liệu:

  • nhấp chuột phải vào bảng và chọn 'Chỉ số/Keys
  • nhấp vào nút Add để thêm một chỉ số mới
  • nhập các thông tin cần thiết trong Properties ở phía bên tay phải:
    • các cột mà bạn muốn (nhấp vào nút ellipsis để chọn)
    • bộ duy nhất là Yes
    • cung cấp cho nó một cái tên thích hợp
+0

Nó hoạt động ... nhưng ... tại sao ràng buộc là hiển thị dưới thư mục INDEX thay vì thư mục CONSTRAINTS. Nó được hiển thị với một biểu tượng khác, nhưng dù sao nó cũng phải ở trong thư mục ràng buộc. –

13
ALTER TABLE dbo.<tablename> ADD CONSTRAINT 
      <namingconventionconstraint> UNIQUE NONCLUSTERED 
    (
       <columnname> 
    ) ON [PRIMARY] 
8

Bạn đang tìm kiếm một cái gì đó như sau

ALTER TABLE dbo.doc_exz 
ADD CONSTRAINT col_b_def 
UNIQUE column_b 

MSDN Docs

5

Trong sơ đồ studio quản lý chọn bảng, nhấp chuột phải để thêm cột mới nếu muốn, nhấp chuột phải vào các và chọn "Kiểm tra ràng buộc", ở đó bạn có thể thêm một.

10

Tôi cũng thấy rằng bạn có thể thực hiện việc này thông qua các biểu đồ cơ sở dữ liệu.

Bằng cách kích chuột phải vào bảng và chọn Indexes/Keys ...

Nhấp vào nút 'Add', và thay đổi các cột đến cột (s) bạn muốn làm độc đáo.

Thay đổi là duy nhất thành Có.

Nhấp vào đóng và lưu biểu đồ và nó sẽ thêm nó vào bảng.

27
ALTER TABLE [TableName] ADD CONSTRAINT [constraintName] UNIQUE ([columns]) 
15

Cảnh báo: Chỉ có một hàng rỗng có thể ở cột bạn đã thiết phải là duy nhất.

Bạn có thể làm điều này với một chỉ số được lọc trong SQL 2008:

CREATE UNIQUE NONCLUSTERED INDEX idx_col1 
ON dbo.MyTable(col1) 
WHERE col1 IS NOT NULL; 

Xem Field value must be unique unless it is NULL cho một loạt các câu trả lời.

+0

làm thế nào để bạn làm điều này trong sql server 2005? – Maxrunner

+2

Không thể đạt được trong máy chủ sql 2005. Tôi khuyên bạn nên nâng cấp lên RDBMS cập nhật hơn - nó sẽ được [chính thức không được hỗ trợ] (http://blogs.msdn.com/b/sqlreleaseservices/archive/2011/ 01/27/end-of-chính-hỗ trợ-cho-sql-server-2005-và-end-of-dịch vụ-pack-hỗ trợ-cho-sql-server-2008-sp1.aspx) kể từ ngày 12 tháng 4 năm 2016. – reedstonefood

84

Trong SQL Server Management Studio Express:

  • bảng Nhấp chuột phải, chọn Modify hoặc Thiết kế (các phiên bản sau)
  • lĩnh vực Kích chuột phải, chọn Indexes/Phím .. .
  • Bấm Thêm
  • Đối Cột, chọn tên trường bạn muốn là duy nhất.
  • Đối với Loại, chọn Khóa duy nhất.
  • Nhấp vào Đóng, Lưu bảng.
6

Để tạo một hạn chế UNIQUE trên một hoặc nhiều cột khi bảng đã được tạo ra, sử dụng SQL sau:

ALTER TABLE TableName ADd UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...) 

Để cho phép đặt tên của một hạn chế UNIQUE cho truy vấn trên

ALTER TABLE TableName ADD CONSTRAINT un_constaint_name UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...) 

Truy vấn được hỗ trợ bởi MySQL/SQL Server/Oracle/MS Access.

+0

'UNIQUE NONCLUSTERED' và *** options ***' PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON'? – Kiquenet

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