Advertisement
JUNIORCEDE1

Untitled

Jul 4th, 2017
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.65 KB | None | 0 0
  1.  
  2. CREATE TABLE NADADOR(
  3. ID_NADADOR                                     varchar2(10),
  4. NOMBRES_NADADOR                              varchar2(40),
  5. NACIONALIDAD_NADADOR                         varchar2(40),
  6. TIEMPO_RECORD_EN_SEGUNDOS                    INTEGER,
  7. NUMERO_CAMPEONATOS_GANADOS                   INTEGER
  8. );
  9.  
  10.  
  11. CREATE TABLE CAMPEONATO(
  12. ID_CAMPEONATO                               varchar2(10),
  13. NOMBRE_CAMPEONATO                          varchar2(50),
  14. NOMBRE_ATLETA_PRIMER_LUGAR                 varchar2(50),
  15. TIEMPO_SEGUNDOS_PRIMER_LUGAR               INTEGER
  16. );
  17.  
  18. CREATE TABLE RESULTADO_CAMPEONATO(
  19. TIEMPO_EN_SEGUNDOS                              INTEGER NOT NULL,
  20. ID_NADADOR                                     varchar2(10) NOT NULL,
  21. ID_CAMPEONATO                               varchar2(10) NOT NULL
  22. );
  23.  
  24.  
  25. CREATE OR REPLACE TRIGGER TR_B_IU_NACIONALIDAD
  26. BEFORE
  27. INSERT OR UPDATE OF NACIONALIDAD_NADADOR ON NADADOR
  28. FOR EACH ROW WHEN (NOT (UPPER(NEW.NACIONALIDAD_NADADOR)='ECUADOR') AND NOT (UPPER(NEW.NACIONALIDAD_NADADOR)='COLOMBIA') AND NOT (UPPER(NEW.NACIONALIDAD_NADADOR)='VENEZUELA'))
  29. DECLARE
  30. BEGIN
  31.     RAISE_APPLICATION_ERROR(-20001,'Nacionalidad Nadador solo acepta estos valores: "ECUADOR", "COLOMBIA", "VENEZUELA";  en mayusculas o minusculas ');
  32. END TR_B_IU_NACIONALIDAD;
  33.  
  34. CREATE OR REPLACE TRIGGER TR_B_IU_TIEMPOCAMPEONADO
  35. AFTER
  36. INSERT OR UPDATE OF TIEMPO_EN_SEGUNDOS  ON RESULTADO_CAMPEONATO
  37. FOR EACH ROW
  38. DECLARE
  39. tiempoanterior INTEGER;
  40. BEGIN
  41.     SELECT TIEMPO_RECORD_EN_SEGUNDOS INTO tiempoanterior FROM NADADOR WHERE ID_NADADOR = :NEW.ID_NADADOR;
  42.     IF :NEW.tiempo_en_segundos < tiempoanterior THEN
  43.         UPDATE NADADOR SET TIEMPO_RECORD_EN_SEGUNDOS = :NEW.tiempo_en_segundos WHERE ID_NADADOR = :NEW.ID_NADADOR;
  44.     END IF;
  45. END TR_B_IU_TIEMPOCAMPEONADO;
  46.  
  47. CREATE OR REPLACE TRIGGER TR_B_IU_PRIMERLUGAR
  48. BEFORE
  49. INSERT OR UPDATE ON RESULTADO_CAMPEONATO
  50. FOR EACH ROW
  51. DECLARE
  52. primero INTEGER := 0;
  53. id_nadador varchar2(10);
  54. nombre varchar2(50);
  55. BEGIN
  56.     primero := :NEW.tiempo_en_segundos;
  57.     id_nadador := :NEW.id_nadador;
  58.     FOR i IN (SELECT * FROM RESULTADO_CAMPEONATO )
  59.     LOOP
  60.         IF i.tiempo_en_segundos < primero AND i.id_campeonato = :NEW.id_campeonato THEN
  61.          primero := i.tiempo_en_segundos;
  62.          id_nadador := i.id_nadador;
  63.         END IF;
  64.     END LOOP;
  65.     FOR i IN (SELECT * FROM NADADOR )
  66.     LOOP
  67.         IF i.id_nadador = id_nadador THEN
  68.         nombre := i.nombrAes_nadador;
  69.         END IF;
  70.     END loop;
  71.     UPDATE CAMPEONATO SET NOMBRE_ATLETA_PRIMER_LUGAR = nombre, TIEMPO_SEGUNDOS_PRIMER_LUGAR = primero WHERE ID_CAMPEONATO = :NEW.ID_CAMPEONATO;
  72. END TR_B_IU_PRIMERLUGAR;
  73.  
  74. INSERT INTO RESULTADO_CAMPEONATO VALUES(21,'6','2');
  75. INSERT INTO RESULTADO_CAMPEONATO VALUES(18,'1','2');
  76. INSERT INTO RESULTADO_CAMPEONATO VALUES(19,'2','1');
  77. INSERT INTO RESULTADO_CAMPEONATO VALUES(20,'3','1');
  78. INSERT INTO RESULTADO_CAMPEONATO VALUES(16,'5','1');
  79. SELECT * FROM campeonato;
  80. SELECT * FROM RESULTADO_CAMPEONATO;
  81. DELETE FROM resultado_campeonato WHERE ID_NADADOR='5';
  82. DELETE FROM NADADOR WHERE ID_NADADOR='5';
  83. DELETE FROM NADADOR WHERE ID_NADADOR='6';
  84. INSERT INTO NADADOR VALUES('1','CHRIS','ECUADOR','18','3');
  85. INSERT INTO NADADOR VALUES('2','FERNANDO','COLOMBIA','19','2');
  86. INSERT INTO NADADOR VALUES('3','LOPEZ','VENEZUELA','20','1');
  87. INSERT INTO NADADOR VALUES('4','MACIAS','ecuador','21','1');
  88. INSERT INTO NADADOR VALUES('5','XAVIER','ecuador','21','1');
  89. INSERT INTO NADADOR VALUES('6','BERMELLO','ecuador',20,3);
  90. SELECT * FROM nadador;
  91. DELETE FROM nadador;
  92. SELECT * FROM campeonato;
  93.  
  94. INSERT INTO campeonato VALUES('1','CAMPEONATO1',NULL,NULL);
  95. INSERT INTO campeonato VALUES('2','CAMPEONATO2',NULL,NULL);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement