Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE TABLE NADADOR(
- ID_NADADOR varchar2(10),
- NOMBRES_NADADOR varchar2(40),
- NACIONALIDAD_NADADOR varchar2(40),
- TIEMPO_RECORD_EN_SEGUNDOS INTEGER,
- NUMERO_CAMPEONATOS_GANADOS INTEGER
- );
- CREATE TABLE CAMPEONATO(
- ID_CAMPEONATO varchar2(10),
- NOMBRE_CAMPEONATO varchar2(50),
- NOMBRE_ATLETA_PRIMER_LUGAR varchar2(50),
- TIEMPO_SEGUNDOS_PRIMER_LUGAR INTEGER
- );
- CREATE TABLE RESULTADO_CAMPEONATO(
- TIEMPO_EN_SEGUNDOS INTEGER NOT NULL,
- ID_NADADOR varchar2(10) NOT NULL,
- ID_CAMPEONATO varchar2(10) NOT NULL
- );
- CREATE OR REPLACE TRIGGER TR_B_IU_NACIONALIDAD
- BEFORE
- INSERT OR UPDATE OF NACIONALIDAD_NADADOR ON NADADOR
- FOR EACH ROW WHEN (NOT (UPPER(NEW.NACIONALIDAD_NADADOR)='ECUADOR') AND NOT (UPPER(NEW.NACIONALIDAD_NADADOR)='COLOMBIA') AND NOT (UPPER(NEW.NACIONALIDAD_NADADOR)='VENEZUELA'))
- DECLARE
- BEGIN
- RAISE_APPLICATION_ERROR(-20001,'Nacionalidad Nadador solo acepta estos valores: "ECUADOR", "COLOMBIA", "VENEZUELA"; en mayusculas o minusculas ');
- END TR_B_IU_NACIONALIDAD;
- CREATE OR REPLACE TRIGGER TR_B_IU_TIEMPOCAMPEONADO
- AFTER
- INSERT OR UPDATE OF TIEMPO_EN_SEGUNDOS ON RESULTADO_CAMPEONATO
- FOR EACH ROW
- DECLARE
- tiempoanterior INTEGER;
- BEGIN
- SELECT TIEMPO_RECORD_EN_SEGUNDOS INTO tiempoanterior FROM NADADOR WHERE ID_NADADOR = :NEW.ID_NADADOR;
- IF :NEW.tiempo_en_segundos < tiempoanterior THEN
- UPDATE NADADOR SET TIEMPO_RECORD_EN_SEGUNDOS = :NEW.tiempo_en_segundos WHERE ID_NADADOR = :NEW.ID_NADADOR;
- END IF;
- END TR_B_IU_TIEMPOCAMPEONADO;
- CREATE OR REPLACE TRIGGER TR_B_IU_PRIMERLUGAR
- BEFORE
- INSERT OR UPDATE ON RESULTADO_CAMPEONATO
- FOR EACH ROW
- DECLARE
- primero INTEGER := 0;
- id_nadador varchar2(10);
- nombre varchar2(50);
- BEGIN
- primero := :NEW.tiempo_en_segundos;
- id_nadador := :NEW.id_nadador;
- FOR i IN (SELECT * FROM RESULTADO_CAMPEONATO )
- LOOP
- IF i.tiempo_en_segundos < primero AND i.id_campeonato = :NEW.id_campeonato THEN
- primero := i.tiempo_en_segundos;
- id_nadador := i.id_nadador;
- END IF;
- END LOOP;
- FOR i IN (SELECT * FROM NADADOR )
- LOOP
- IF i.id_nadador = id_nadador THEN
- nombre := i.nombrAes_nadador;
- END IF;
- END loop;
- UPDATE CAMPEONATO SET NOMBRE_ATLETA_PRIMER_LUGAR = nombre, TIEMPO_SEGUNDOS_PRIMER_LUGAR = primero WHERE ID_CAMPEONATO = :NEW.ID_CAMPEONATO;
- END TR_B_IU_PRIMERLUGAR;
- INSERT INTO RESULTADO_CAMPEONATO VALUES(21,'6','2');
- INSERT INTO RESULTADO_CAMPEONATO VALUES(18,'1','2');
- INSERT INTO RESULTADO_CAMPEONATO VALUES(19,'2','1');
- INSERT INTO RESULTADO_CAMPEONATO VALUES(20,'3','1');
- INSERT INTO RESULTADO_CAMPEONATO VALUES(16,'5','1');
- SELECT * FROM campeonato;
- SELECT * FROM RESULTADO_CAMPEONATO;
- DELETE FROM resultado_campeonato WHERE ID_NADADOR='5';
- DELETE FROM NADADOR WHERE ID_NADADOR='5';
- DELETE FROM NADADOR WHERE ID_NADADOR='6';
- INSERT INTO NADADOR VALUES('1','CHRIS','ECUADOR','18','3');
- INSERT INTO NADADOR VALUES('2','FERNANDO','COLOMBIA','19','2');
- INSERT INTO NADADOR VALUES('3','LOPEZ','VENEZUELA','20','1');
- INSERT INTO NADADOR VALUES('4','MACIAS','ecuador','21','1');
- INSERT INTO NADADOR VALUES('5','XAVIER','ecuador','21','1');
- INSERT INTO NADADOR VALUES('6','BERMELLO','ecuador',20,3);
- SELECT * FROM nadador;
- DELETE FROM nadador;
- SELECT * FROM campeonato;
- INSERT INTO campeonato VALUES('1','CAMPEONATO1',NULL,NULL);
- INSERT INTO campeonato VALUES('2','CAMPEONATO2',NULL,NULL);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement