Quelqu'un pourrait clarifier quel est le but d'avoir un index unique sans contrainte unique (Oracle)? Par exemple,Oracle contrainte unique et index unique
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
Jusqu'à présent, il semble qu'il y ait une contrainte. Mais
create table test33(id int not null primary key,
test22_id int not null,
foreign key(test22_id) references test22(id));
échoue également avec "ORA-02270: no matching unique or primary key for this column-list"
. Je suis totalement confus par ce comportement. Y a-t-il une contrainte ou pas?
De nombreux articles expliquent pourquoi il est possible d'avoir une contrainte unique sans index unique; c'est clair et c'est parfaitement logique. Cependant, je ne comprends pas la raison de l'index unique sans contrainte.
Merci pour votre réponse, cela devient plus clair maintenant. Ce que je n'aime vraiment pas, c'est le même code d'erreur ('ORA-00001') pour les deux cas, avec une contrainte et un index unique. – a1ex07
Excellent, merci pour le "dernier mot" sur si vous pouvez créer une contrainte unique sur un FBI unique. – orbfish
Merci - c'est la seule explication claire de la différence entre les deux que j'ai trouvé. J'ai vu certains mentionner que déclarer une contrainte unique donne à l'optimiseur plus d'informations qu'un index unique ...est-ce vrai, et cela signifie-t-il qu'une contrainte unique pourrait apporter des avantages de performance par rapport à l'index unique sans la contrainte? – Mike