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