Crear tablas base de datos
Enviado por Eduardo Andres Valdebenito • 25 de Agosto de 2017 • Tarea • 703 Palabras (3 Páginas) • 101 Visitas
LABORATORIO N° 8
Tablas
Create table ALUMNOS(
DN_A INT,
NOMBRE_A VARCHAR(30),
FECHA_NACIMIENTO DATE
);
ALTER TABLE ALUMNOS ADD (
CONSTRAINT ALUMNO_PK PRIMARY KEY (DN_A));
Create table CURSO(
DN_C INT PRIMARY KEY NOT NULL,
NOMBRE_C VARCHAR(30),
COSTO INT
);
create table Inscribe (
dn_a integer not null,
dn_c integer,
nota integer,
fecha_ing date,
foreign key (dn_a) references Alumnos(dn_a)
);
Preguntas
1)
Creamos una secuencia que empiece en 1, y luego creamos un trigger que antes de insertar o actualizar realice un autoincremento de 1 en 1 a la clave de alumnos( DN_C)
CREATE SEQUENCE ALUMNO_SEQ START WITH 1;
CREATE OR REPLACE TRIGGER AUTOIN
BEFORE INSERT ON ALUMNOS
FOR EACH ROW
BEGIN
SELECT ALUMNO_SEQ.nextval
INTO :new.DN_A
FROM dual;
END;
INSERT INTO ALUMNOS VALUES(1,'EDUARDO',date'1995-09-23');
INSERT INTO ALUMNOS VALUES(1,'CHIRSTOFER',date'1996-05-01');
SELECT * FROM ALUMNOS;
4 EDUARDO 23/09/95
5 CHIRSTOFER 01/05/96
6 juan 03/02/99
2)
Creamos un trigger que verifica que cuando se actualice un alumnos la fecha ingresada no sea inferior a la que ya se encontraba.
create or replace trigger Ver_FechaNac before update on Alumnos
for each row
begin
if(:new.fecha_nacimiento<:old.fecha_nacimiento) then
raise_application_error(-20000,'no puede ingresar una fecha de nacimiento menor a la que tenia');
end if;
end;
insert into Alumnos values(1,'juan',to_date('1999/2/3','YYYY/MM/DD'));
update Alumnos set fecha_nacimiento =TO_DATE('1995/2/3','YYYY/MM/DD') where dn_a=6
update Alumnos set fecha_nacimiento =TO_DATE('1995/2/3','YYYY/MM/DD') where dn_a=6
Informe de error -
ORA-20000: no puede ingresar una fecha de nacimiento menor a la que tenia
ORA-06512: at "SYSTEM.VER_FECHANAC", line 3
ORA-04088: error during execution of trigger 'SYSTEM.VER_FECHANAC'
3)
Usamos un cursor el cual buscaba cuantas veces aparecia el dn_c que se quería inscribir un ramos, si este aparecia mas de 3 veces el trigger mostraba un error, que decía que el alumnos no podría inscribir mas de 3 ramos.
create or replace trigger Ver_nro_ramos_Inscritos before insert on Inscribe
for each row
declare
CURSOR CONT IS
...