¿Podría alguien aclarar cuál es el propósito de tener un índice único sin restricción única (Oracle)? Por ejemplo,Restricción única de Oracle e índice único
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
Hasta ahora parece que no es una limitación. Pero
create table test33(id int not null primary key,
test22_id int not null,
foreign key(test22_id) references test22(id));
también falla con "ORA-02270: no matching unique or primary key for this column-list"
. Estoy totalmente confundido por este comportamiento. ¿Hay una restricción o no?
Hay muchos artículos que explican por qué es posible tener una restricción única sin índice único; eso es claro y tiene perfecto sentido. Sin embargo, no entiendo la razón del índice único sin restricción.
Gracias por su respuesta, ahora está más claro. Lo que realmente no me gusta es el mismo código de error ('ORA-00001') para ambos casos, con restricción e índice único. – a1ex07
Excelente, gracias por la "última palabra" sobre si puede crear una restricción única en un FBI único. – orbfish
Gracias - esta es la única explicación clara de la diferencia entre los dos que he encontrado. He visto mencionar que declarar una restricción única le da al optimizador más información que un índice único ...¿es eso cierto, y eso significa que una restricción única podría proporcionar algún beneficio de rendimiento sobre el índice único sin la restricción? – Mike