Probé este ejemplo en Oracle 11.2.0.2.7. Se puede crear una tabla con particiones de la manera siguiente:
SQL> create table andrews_table
2 partition by range (owner)
3 (partition p1 values less than ('M'),
4 partition p2 values less than (maxvalue))
5 as select * from dba_tables
6 where owner = 'SYS'
7 /
Tabla creada.
SQL>
Se puede crear un índice local en esta tabla así:
SQL> create index andrews_index
2 on andrews_table (table_name)
3 local
4 /
Indice creado.
SQL> drop index andrews_index
2 /
Indice borrado.
SQL>
Pero si quieres crear un índice único, éste no puede ser local y Oracle te da un error que no ayuda mucho:
SQL> create unique index andrews_index
2 on andrews_table (table_name)
3 local
4 /
on andrews_table (table_name)
*
ERROR en linea 2:
ORA-14039: las columnas de particion deben formar un
subjuego de columnas clave de un indice UNIQUE
SQL>
La respuesta es sencilla, el índice único tiene que ser global:
SQL> create unique index andrews_index
2 on andrews_table (table_name)
3 global
4 /
Indice creado.
SQL>
No hay comentarios:
Publicar un comentario