2013-06-27 29 views
16

Tôi có một bảng với 4 CộtLàm thế nào để đưa ra một ràng buộc duy nhất đối với sự kết hợp các cột trong Oracle?

Mỗi cột sẽ là A, B, C, D

Cột A là chìa khóa chính. Cột B có ràng buộc tên duy nhất.

Bây giờ tôi muốn loại bỏ ràng buộc duy nhất cho cột B và đưa ra ràng buộc duy nhất bằng cách kết hợp các cột B, C và D. Vì vậy, bảng sẽ chỉ cho phép một hàng có giá trị cụ thể trong cột B, C và D.

Tôi có thể cung cấp loại hạn chế này như thế nào?

tôi đã cố gắng đưa ra các khóa duy nhất tổng hợp như:

ALTER TABLE TABLENAME ADD CONSTRAINT CONSTRAINT_NAME UNIQUE (COLUMN_B, COLUMN_C, COLUMN_D) 

Nhưng nó được kiểm tra xem có bất kỳ một trong những khó khăn đang hiện diện chứ không phải là kiểm tra sự kết hợp của chế khóa duy nhất.

+0

@Naveen tôi đã hạn chế như bạn nói .. nhưng có vẻ như các hạn chế chỉ kiểm tra đối với bất kỳ một trong những tên cột ... Tôi muốn nó giống như một hàng mới sẽ không được phép nhập tất cả các giá trị ba cột đã có sẵn trong bảng. –

+1

hai @nigelthomas xem liên kết này http://stackoverflow.com/questions/1109614/how-can-i-create-a-sql-unique-constraint-based-on-2-columns –

Trả lời

33

Tạo một chìa khóa duy nhất trên những cột

ALTER TABLE YourTable 
    add CONSTRAINT YourTable_unique UNIQUE (B, C, D); 

Oracle/PLSQL: Unique Constraints

+0

Quy ước đặt tên là gì? Điều gì sẽ xảy ra nếu bạn có hai giá trị duy nhất không liên quan trong một bảng? Sau đó 'YourTable_unique' sẽ cùng tên. –

+0

@PhilipRego, bạn nói đúng về bình luận của bạn. Quy ước đặt tên là tùy thuộc vào nhóm, công ty, người dùng để quyết định. Nó chỉ là một ví dụ. – saamorim

5

Trước hết, bạn nên xóa Hạn chế hiện tại bằng cách sử dụng truy vấn ALTER bên dưới.

ALTER TABLE table_name 
    DROP CONSTRAINT myUniqueConstraint; 

Bây giờ, bạn có thể tạo một Hạn chế UNIQUE bằng cách sử dụng các từ khoá UNIQUE với sự kết hợp của Cột yêu cầu.

Ví dụ:

ALTER TABLE table_name 
    ADD CONSTRAINT myUniqueConstraint UNIQUE(B, C, D); 

Detailed explanation of UNIQUE Constraint here.

+0

http://stackoverflow.com/question/1109614/how-can-i-create-a-sql-unique-constraint-based-on-2-columns –

0

ALTER TABLE table_name DROP CẤU TRÚC constraint_name;

CREATE INDEX constraint_name UNIQUE ON tên_bảng (B, C, D)

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