70 - Secuencias (create sequence- alter sequence - nextval - drop sequence)


Primer problema:
Una empresa registra los datos de sus empleados en una tabla llamada "empleados".
1 - Cree la secuencia "sec_legajoempleados" estableciendo el valor mínimo (1), máximo (999), 
valor inicial (100), valor de incremento (2) y no circular.

2- Cree la tabla:
 create table empleados(
  legajo bigint default nextval('sec_legajoempleados'),
  documento char(8) not null,
  nombre varchar(30) not null,
  primary key(legajo)
 );

3 - Ingrese algunos registros:
 insert into empleados(documento,nombre)
  values ('22333444','Ana Acosta');
 insert into empleados(documento,nombre)
  values ('23444555','Betina Bustamante');
 insert into empleados(documento,nombre)
  values ('24555666','Carlos Caseros');
 insert into empleados(documento,nombre)
  values ('25666777','Diana Dominguez');
 insert into empleados(documento,nombre)
  values ('26777888','Estela Esper');

4 - Recupere los registros de la tabla empleados.

5 - Efectue un select de la secuencia.

6 - Elimine la secuencia y la tabla asociada a dicha secuencia.
Ver solución

 create sequence sec_legajoempleados
  start with 100
  minvalue 1
  maxvalue 999
  increment by 2;

 create table empleados(
  legajo bigint default nextval('sec_legajoempleados'),
  documento char(8) not null,
  nombre varchar(30) not null,
  primary key(legajo)
 );

 insert into empleados(documento,nombre)
  values ('22333444','Ana Acosta');
 insert into empleados(documento,nombre)
  values ('23444555','Betina Bustamante');
 insert into empleados(documento,nombre)
  values ('24555666','Carlos Caseros');
 insert into empleados(documento,nombre)
  values ('25666777','Diana Dominguez');
 insert into empleados(documento,nombre)
  values ('26777888','Estela Esper');

select * from empleados;

select * from sec_legajoempleados;

drop sec_legajoempleados;

 

Segundo problema:
Una empresa organiza un curso de computación (dispone de dos aulas), almacenar en una tabla
 inscriptos los datos del estudiante. Cada vez que se inscribe un alumno asignarlo a un aula en
forma alternada (primero a la 1 y luego a la 2, luego nuevamente a la 1 y así sucesivamente)

1 - Crear una secuencia sec_codigoaulainscriptos (valor inicial 1, incremento 1, valor máximo 2 y 
debe ser circular)

2 - Crear la tabla inscriptos:
 create table inscriptos(
  documento char(8) not null,
  nombre varchar(30) not null,
  codigocurso int default nextval('sec_codigoaulainscriptos'),
  primary key(documento)
 );

3 - Insertar algunos registros:
insert into inscriptos(documento,nombre) values ('20000000','Rodriguez Pablo');
insert into inscriptos(documento,nombre) values ('30000000','Mercado Ana');
insert into inscriptos(documento,nombre) values ('40000000','Morello Luis');
insert into inscriptos(documento,nombre) values ('50000000','Prado Juan');
insert into inscriptos(documento,nombre) values ('60000000','Solis Maria');

4 - Imprimir todos los alumnos del curso 1.

5 - Imprimir todos los alumnos del curso 2.

Ver solución
create sequence sec_codigoaulainscriptos
  start with 1
  minvalue 1
  maxvalue 2
  cycle;

 create table inscriptos(
  documento char(8) not null,
  nombre varchar(30) not null,
  codigocurso int default nextval('sec_codigoaulainscriptos'),
  primary key(documento)
 );

insert into inscriptos(documento,nombre) values ('20000000','Rodriguez Pablo');
insert into inscriptos(documento,nombre) values ('30000000','Mercado Ana');
insert into inscriptos(documento,nombre) values ('40000000','Morello Luis');
insert into inscriptos(documento,nombre) values ('50000000','Prado Juan');
insert into inscriptos(documento,nombre) values ('60000000','Solis Maria');

select * from inscriptos where codigocurso=1;

select * from inscriptos where codigocurso=2;

Retornar