46 - Indices (eliminar) |
Trabajamos con la tabla "empleados".
Eliminamos la tabla y la creamos:
drop table empleados; create table empleados( legajo number (5), documento char(8), apellido varchar2(40), nombre varchar2(40) );
Creamos un índice único para el campo "legajo":
create unique index I_empleados_legajo on empleados(legajo);
Agregamos una restricción "unique" sobre "legajo":
alter table empleados add constraint UQ_empleados_legajo unique (legajo);
Verificamos que la restricción usa el índice creado anteriormente, no crea otro:
select constraint_name, constraint_type, index_name from user_constraints where table_name='EMPLEADOS';
Agregamos una restricción "primary key" sobre "documento":
alter table empleados add constraint PK_empleados_documento primary key(documento);
Verificamos que Oracle creó un índice para el campo "documento":
select constraint_name, constraint_type, index_name from user_constraints where table_name='EMPLEADOS';
Consultamos todos los índices y sus tipos consultando "user_indexes":
select index_name,uniqueness from user_indexes where table_name='EMPLEADOS';
Creamos un índice no único sobre "nombre":
create index I_empleados_nombre on empleados(nombre);
Creamos un índice no único sobre "apellido":
create index I_empleados_apellido on empleados(apellido);
Si intentamos eliminar un índice que utiliza una restricción Oracle no lo permite:
drop index I_empleados_legajo;
Verificamos que tal índice es utilizado por una restricción:
select constraint_name, constraint_type, index_name from user_constraints where index_name='I_EMPLEADOS_LEGAJO';
Eliminamos el índice "I_empleados_nombre":
drop index I_empleados_nombre;
Corroboremos que se eliminó:
select *from user_objects where object_type='INDEX';
No aparece en la lista.
Eliminamos la tabla:
drop table empleados;
Verificamos que se eliminaron todos los índices establecidos sobre la tabla:
select *from user_indexes where table_name='EMPLEADOS';
No aparece ninguno cuyo nombre de la tabla sea "empleados".
Lo verificamos nuevamente consultando el diccionario de todos los objetos:
select *from user_objects where object_type='INDEX';
No aparecen los índices.