Ai đó có thể làm rõ mục đích của việc có chỉ mục duy nhất không có ràng buộc duy nhất (Oracle) là gì? Ví dụ:Ràng buộc duy nhất của Oracle và chỉ mục duy nhất
create table test22(id int, id1 int, tmp varchar(20));
create unique index idx_test22 on test22(id);
insert into test22(id, id1, tmp) values (1, 2, 'aaa'); // ok
insert into test22(id, id1, tmp) values (1, 2, 'aaa'); // fails, ORA-00001: unique
// constraint (TEST.IDX_TEST22) violated
Cho đến nay có vẻ như có ràng buộc. Nhưng
create table test33(id int not null primary key,
test22_id int not null,
foreign key(test22_id) references test22(id));
cũng không thành công với "ORA-02270: no matching unique or primary key for this column-list"
. Tôi hoàn toàn bối rối bởi hành vi này. Có hạn chế hay không?
Có nhiều bài viết giải thích tại sao có thể có ràng buộc duy nhất không có chỉ mục duy nhất; điều đó rõ ràng và có ý nghĩa hoàn hảo. Tuy nhiên, tôi không hiểu lý do cho chỉ mục duy nhất mà không bị ràng buộc.
Cảm ơn câu trả lời của bạn, hiện đã rõ ràng hơn. Những gì tôi thực sự không thích là cùng một mã lỗi ('ORA-00001') cho cả hai trường hợp, với ràng buộc và chỉ số duy nhất. – a1ex07
Tuyệt vời, cảm ơn "câu nói cuối cùng" về việc liệu bạn có thể tạo ra một ràng buộc duy nhất trên một FBI duy nhất hay không. – orbfish
Cảm ơn - đây là giải thích rõ ràng duy nhất về sự khác biệt giữa hai tôi đã tìm thấy. Tôi đã thấy một số đề cập đến việc tuyên bố một ràng buộc duy nhất cung cấp cho trình tối ưu hóa nhiều thông tin hơn một chỉ mục duy nhất ...điều đó có đúng không, và điều đó có nghĩa là một ràng buộc duy nhất có thể cung cấp một số lợi ích hiệu suất so với chỉ mục duy nhất không có ràng buộc? – Mike