36 - Alterar secuencia (alter sequence) |
Una empresa registra los datos de sus empleados en una tabla llamada "empleados".
1- Elimine la tabla "empleados":
drop table empleados;
2- Cree la tabla:
create table empleados( legajo number(3), documento char(8) not null, nombre varchar2(30) not null, primary key(legajo) );
3- Elimine la secuencia "sec_legajoempleados" y luego créela estableciendo el valor mínimo (1), máximo (210), valor inicial (206), valor de incremento (2) y no circular. Finalmente inicialice la secuencia.
4- Ingrese algunos registros, empleando la secuencia creada para los valores de la clave primaria.
insert into empleados values (sec_legajoempleados.currval,'22333444','Ana Acosta'); insert into empleados values (sec_legajoempleados.nextval,'23444555','Betina Bustamante'); insert into empleados values (sec_legajoempleados.nextval,'24555666','Carlos Caseros');
5- Recupere los registros de "libros" para ver los valores de clave primaria.
6- Vea el valor actual de la secuencia empleando la tabla "dual"
7- Intente ingresar un registro empleando "nextval":
insert into empleados values (sec_legajoempleados.nextval,'25666777','Diana Dominguez');
Oracle muestra un mensaje de error indicando que la secuencia ha llegado a su valor máximo.
8- Altere la secuencia modificando el atributo "maxvalue" a 999.
9- Obtenga información de la secuencia.
10- Ingrese el registro del punto 7.
11- Recupere los registros.
12- Modifique la secuencia para que sus valores se incrementen en 1.
13- Ingrese un nuevo registro:
insert into empleados values (sec_legajoempleados.nextval,'26777888','Federico Fuentes');
14- Recupere los registros.
15- Elimine la secuencia creada.
16- Consulte todos los objetos de la base de datos que sean secuencias y verifique que "sec_legajoempleados" ya no existe.
Ver solucióndrop table empleados; create table empleados( legajo number(3), documento char(8) not null, nombre varchar2(30) not null, primary key(legajo) ); drop sequence sec_legajoempleados; create sequence sec_legajoempleados start with 206 increment by 2 maxvalue 210 minvalue 1; select sec_legajoempleados.nextval from dual; insert into empleados values (sec_legajoempleados.currval,'22333444','Ana Acosta'); insert into empleados values (sec_legajoempleados.nextval,'23444555','Betina Bustamante'); insert into empleados values (sec_legajoempleados.nextval,'24555666','Carlos Caseros'); select *from empleados; select sec_legajoempleados.currval from dual; insert into empleados values (sec_legajoempleados.nextval,'25666777','Diana Dominguez'); alter sequence sec_legajoempleados maxvalue 999; select *from all_sequences where sequence_name='SEC_LEGAJOEMPLEADOS'; insert into empleados values (sec_legajoempleados.nextval,'25666777','Diana Dominguez'); select *from empleados; alter sequence sec_legajoempleados increment by 1; insert into empleados values (sec_legajoempleados.nextval,'26777888','Federico Fuentes'); select *from empleados; drop sequence sec_legajoempleados; select object_name,object_type from all_objects where object_type='SEQUENCE';