Advertisement
Guest User

Untitled

a guest
Jul 15th, 2019
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -------------------------------------------------------------------------------------------------------------------------------------------------------------
  2. -------------------------------------------------------------------------------------------------------------------------------------------------------------
  3. -------------------------------------------------------------------------------------------------------------------------------------------------------------
  4. -------------------------------------------------------------------------------------------------------------------------------------------------------------
  5. -------------------------------------------------------------------------------------------------------------------------------------------------------------
  6. -------------------------------------------------------------------------------------------------------------------------------------------------------------
  7. -------------------------------------------------------------------------------------------------------------------------------------------------------------
  8.  
  9. SELECT * FROM PROFESSOR;
  10.  
  11. SELECT * FROM CURSO;
  12.  
  13. SELECT * FROM MODULO;
  14. SELECT * FROM PRE_REQUESITO;
  15.  
  16.  
  17. INSERT INTO PROFESSOR VALUES (1, 'PROFS', '123456', '1998-08-08', 'OPROFS321@GMAIL.COM', '123', 10000, '2000-01-01');
  18.  
  19. INSERT INTO CURSO VALUES (1, 'CURSO', 'CURSO CURSO', 1000, 200, 15, TRUE, TRUE, 1);
  20.  
  21. INSERT INTO MODULO VALUES (1, 'MATEMATICA', 'DESCRICAO', 100, 1);
  22. INSERT INTO MODULO VALUES (2, 'PORTUGUES', 'DESCRICAO', 120, 1);
  23. INSERT INTO MODULO VALUES (3, 'CIENCIAS', 'DESCRICAO', 150, 1);
  24. INSERT INTO MODULO VALUES (4, 'HISTORIA', 'DESCRICAO', 50, 1);
  25. INSERT INTO MODULO VALUES (5, 'GEOGRAFIA', 'DESCRICAO', 180, 1);
  26.  
  27.  
  28. CREATE FUNCTION VERIFICAR_VALIDADE_PRE_REQUISITO(COD_MODULO_ANALISADO INT, COD_MODULOS_PERCORRIDOS INT[])
  29. RETURNS BOOLEAN
  30. AS $$
  31. DECLARE
  32.     REGISTROS_MODULO_PRE_REQUISITO RECORD;
  33.     REGISTRO_MODULO_PRE_REQUISITO RECORD;
  34. BEGIN
  35.     SELECT COD_MODULO_PRE_REQUISITO INTO REGISTROS_MODULO_PRE_REQUISITO FROM PRE_REQUISITO WHERE COD_MODULO_PRE_REQUISITO = COD_MODULO_ANALISADO;
  36.  
  37.     IF (SELECT ARRAY[COD_MODULO_ANALISADO] <@ COD_MODULOS_PERCORRIDOS) IS TRUE THEN
  38.         RETURN FALSE;
  39.     ELSE
  40.         COD_MODULOS_PERCORRIDOS := COD_MODULOS_PERCORRIDOS || ARRAY[COD_MODULO_ANALISADO];
  41.  
  42.         FOR REGISTRO_MODULO_PRE_REQUISITO IN (SELECT * FROM REGISTROS_MODULO_PRE_REQUISITO)
  43.         LOOP
  44.             RAISE NOTICE 'VERIFICAR AGORA PARA: (%,%)', REGISTRO_MODULO_PRE_REQUISITO.COD_MODULO, COD_MODULOS_PERCORRIDOS;
  45.             IF VERIFICAR_VALIDADE_PRE_REQUISITO(REGISTRO_MODULO_PRE_REQUISITO.COD_MODULO, COD_MODULOS_PERCORRIDOS) IS FALSE THEN
  46.                 RETURN FALSE;
  47.             ELSE
  48.                 RETURN TRUE;
  49.             END IF;
  50.         END LOOP;
  51.         RETURN TRUE;
  52.     END IF;
  53. END
  54. $$ LANGUAGE plpgsql;
  55.  
  56.  
  57. CREATE FUNCTION EVENTO_INSERT_PRE_REQUISITO()
  58. RETURNS TRIGGER
  59. AS $$
  60. BEGIN
  61.     IF VERIFICAR_VALIDADE_PRE_REQUISITO(NEW.COD_MODULO, ARRAY[]) IS FALSE THEN
  62.         RAISE EXCEPTION 'VOCÊ NÃO PODE FAZER ESSA RELAÇÃO MODULO - MODULO_PRE_REQUISITO. PRE-REQUITOS ENTRAM EM IMPASSE!';
  63.     ELSE
  64.         RETURN NEW;
  65.     END IF;
  66.    
  67. END
  68. $$ LANGUAGE plpgsql;
  69.  
  70.  
  71. -------------------- OBS: PRE_REQUISITO E ATRIBUTOS TAO COM NOMES ERRADOS ---------------------
  72.  
  73. CREATE TRIGGER TRIGGER_PRE_REQUISITO
  74. BEFORE INSERT
  75. ON PRE_REQUISITO FOR EACH ROW
  76. EXECUTE PROCEDURE EVENTO_INSERT_PRE_REQUISITO();
  77.  
  78.  
  79. -- VERIFICAR SE O VALOR TA NA LISTA
  80. SELECT ARRAY[1] <@ ARRAY [1,2,4]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement