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 WHERE ID_CAMPEONATO = :NEW.ID_CAMPEONATO )
- LOOP
- IF i.tiempo_en_segundos < primero THEN
- primero := i.tiempo_en_segundos;
- id_nadador := i.id_nadador;
- END IF;
- END LOOP;
- FOR i IN (SELECT * FROM NADADOR WHERE ID_NADADOR = id_nadador )
- LOOP
- nombre := i.nombres_nadador;
- 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(17,'6','1');
- SELECT * FROM RESULTADO_CAMPEONATO;
- DELETE FROM resultado_campeonato 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','MACIAS','ecuador','21','1');
- INSERT INTO NADADOR VALUES('6','BERMELLO','ecuador',20,3);
- SELECT * FROM nadador;
- SELECT * FROM campeonato;
- INSERT INTO campeonato VALUES('1','CAMPEONATO1',NULL,NULL);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement