Advertisement
JUNIORCEDE1

db trigger

Jun 28th, 2017
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DROP TABLE Participante_;
  2. CREATE TABLE Participante_
  3. (
  4.   ID_PARTICIPANTE            NUMBER NOT NULL,
  5.   NOMBRE_PARTICIPANTE        VARCHAR(50),
  6.   NACIONALIDAD_PARTICIPANTE  VARCHAR(50),
  7.   FECHA_PACIENTE             DATE,
  8.   EDAD                       INTEGER,
  9.   CONSTRAINT PK_Participante_ PRIMARY KEY (ID_PARTICIPANTE)
  10. );
  11. -------------------------------------
  12. DROP TABLE Resultados_;
  13. CREATE TABLE Resultados_
  14. (
  15.    
  16.    PUNTOS_JURADO1 NUMBER,
  17.    PUNTOS_JURADO2 NUMBER,
  18.    PUNTOS_JURADO3 NUMBER,
  19.    TOTAL_PUNTOS NUMBER NOT NULL,
  20.    OBSERVACION VARCHAR(50),
  21.    CONSTRAINT PK_Resultados_ PRIMARY KEY ( TOTAL_PUNTOS )
  22. );
  23. --------------------------------------
  24. DROP TABLE Disciplina_Marcial_;
  25. CREATE TABLE Disciplina_Marcial_
  26. (
  27.    ID_DISCILPLINA       NUMBER NOT NULL,          
  28.    NOMBRE_DISCIPLINA     VARCHAR(50),
  29.    CONSTRAINT PK_Disciplina_Marcial_ PRIMARY KEY (ID_DISCILPLINA)
  30. );
  31.  
  32. CREATE OR REPLACE TRIGGER tr_b_i_resutados
  33. before
  34. INSERT OR UPDATE ON Resultados_
  35. FOR EACH ROW
  36. DECLARE
  37. execep EXCEPTION;
  38. BEGIN
  39.     IF :NEW.puntos_jurado1 < 0 OR :NEW.puntos_jurado1 > 10 OR :NEW.puntos_jurado2 < 0 OR :NEW.puntos_jurado2 > 10 OR :NEW.puntos_jurado3 < 0 OR :NEW.puntos_jurado3 > 10 THEN
  40.         RAISE execep;
  41.     END IF;
  42.     EXCEPTION
  43.     WHEN execep THEN
  44.     RAISE_APPLICATION_ERROR(-20002, 'Los puntajes ingresados solo pueden estar entre 0 y 10');
  45. END;
  46.  
  47. CREATE OR REPLACE TRIGGER tr_b_i_observacion_r
  48. before
  49. INSERT OR UPDATE ON Resultados_
  50. FOR EACH ROW
  51. DECLARE
  52. sumatoria NUMBER :=0;
  53. promedio NUMBER :=0;
  54. mensaje VARCHAR(50);
  55. BEGIN
  56.     sumatoria := :NEW.PUNTOS_JURADO1+:NEW.PUNTOS_JURADO2+:NEW.PUNTOS_JURADO3;
  57.     promedio:= sumatoria/3;
  58.     IF promedio >= 7 THEN
  59.      mensaje := 'Medalla de Oro';
  60.     ELSIF promedio >= 4 AND promedio < 7 THEN
  61.         mensaje := 'Medalla de Plata';
  62.     ELSIF promedio>=0 AND promedio <4 THEN
  63.         mensaje := 'Medalla de Bronce';
  64.     END IF;
  65.     :NEW.observacion := mensaje;
  66.     :NEW.TOTAL_PUNTOS := sumatoria;
  67. END;
  68. INSERT INTO Resultados_ ("PUNTOS_JURADO1","PUNTOS_JURADO2","PUNTOS_JURADO3","TOTAL_PUNTOS","OBSERVACION") VALUES (5,5,10,5,'ninguna');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement