ユニークな制約(Oracle)を持たないユニーク索引を使用する目的は何かを明確にすることはできますか? 例:Oracleのユニーク制約とユニーク索引
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
これまでのところ、制約があるようです。しかし
create table test33(id int not null primary key,
test22_id int not null,
foreign key(test22_id) references test22(id));
も"ORA-02270: no matching unique or primary key for this column-list"
で失敗します。 私はこの動作によって完全に混乱しています。制約はありますか?
ユニークなインデックスを持たないユニークな制約を持つことができる理由を説明する記事が多数あります。それははっきりしていて、完璧な意味を持っていますしかし、私は制約のないユニークなインデックスの理由を理解していません。
答えていただきありがとうございます。今はっきりしています。私が本当に好きでないのは、制約とユニークなインデックスを持つ両方のケースで同じエラーコード( 'ORA-00001')です。 – a1ex07
ユニークなFBIに対してユニークな制約を作成できるかどうかについて、「最後の賛辞」をいただきありがとうございます。 – orbfish
ありがとう - これは私が見つけた2つの違いの唯一の明確な説明です。 一意の制約を宣言すると、オプティマイザに一意のインデックスよりも多くの情報が与えられます。それは本当ですか?それは、ユニークな制約が、制約なしでユニークなインデックスに対していくつかのパフォーマンス上の利点をもたらす可能性があることを意味しますか? – Mike