Advertisement
Guest User

Untitled

a guest
Jul 15th, 2019
76
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 OR REPLACE FUNCTION VERIFICAR_VALIDADE_PRE_REQUISITO(COD_MODULO_ANALISADO INT, COD_MODULOS_PERCORRIDOS INT[])
  29. RETURNS BOOLEAN
  30. AS $$
  31. DECLARE
  32.     REGISTRO_MODULO_PRE_REQUISITO RECORD;
  33. BEGIN
  34.     IF (SELECT ARRAY[COD_MODULO_ANALISADO] <@ COD_MODULOS_PERCORRIDOS) IS TRUE THEN
  35.         RETURN FALSE;
  36.     ELSE
  37.         COD_MODULOS_PERCORRIDOS := COD_MODULOS_PERCORRIDOS || ARRAY[COD_MODULO_ANALISADO];
  38.        
  39.         FOR REGISTRO_MODULO_PRE_REQUISITO IN (SELECT * FROM PRE_REQUISITO WHERE COD_MODULO = COD_MODULO_ANALISADO) LOOP
  40.             RAISE NOTICE 'VERIFICAR AGORA PARA: (%,%)', REGISTRO_MODULO_PRE_REQUISITO.COD_MODULO, COD_MODULOS_PERCORRIDOS;
  41.             IF VERIFICAR_VALIDADE_PRE_REQUISITO(REGISTRO_MODULO_PRE_REQUISITO.COD_MODULO, COD_MODULOS_PERCORRIDOS) IS FALSE THEN
  42.                 RETURN FALSE;
  43.             ELSE
  44.                 RETURN TRUE;
  45.             END IF;
  46.         END LOOP;
  47.         RETURN TRUE;
  48.     END IF;
  49. END
  50. $$ LANGUAGE plpgsql;
  51.  
  52. CREATE OR REPLACE FUNCTION EVENTO_INSERT_PRE_REQUISITO()
  53. RETURNS TRIGGER
  54. AS $$
  55. BEGIN
  56.     IF VERIFICAR_VALIDADE_PRE_REQUISITO(NEW.COD_MODULO, ARRAY[NULL]::INT[]) IS FALSE THEN
  57.         RAISE EXCEPTION 'VOCÊ NÃO PODE FAZER ESSA RELAÇÃO MODULO - MODULO_PRE_REQUISITO. PRE-REQUITOS ENTRAM EM IMPASSE!';
  58.     ELSE
  59.         RETURN NEW;
  60.     END IF;
  61.    
  62. END
  63. $$ LANGUAGE plpgsql;
  64.  
  65.  
  66. -------------------- OBS: PRE_REQUISITO E ATRIBUTOS TAO COM NOMES ERRADOS ---------------------
  67.  
  68. CREATE TRIGGER TRIGGER_PRE_REQUISITO
  69. BEFORE INSERT
  70. ON PRE_REQUISITO FOR EACH ROW
  71. EXECUTE PROCEDURE EVENTO_INSERT_PRE_REQUISITO();
  72.  
  73.  
  74.  
  75. SELECT * FROM MODULO;
  76. SELECT * FROM PRE_REQUISITO;
  77.  
  78. DELETE FROM PRE_REQUISITO;
  79.  
  80. INSERT INTO PRE_REQUISITO VALUES (100, 4, 1);
  81. INSERT INTO PRE_REQUISITO VALUES (101, 4, 2);
  82. INSERT INTO PRE_REQUISITO VALUES (102, 3, 1);
  83. INSERT INTO PRE_REQUISITO VALUES (103, 5, 3);
  84. INSERT INTO PRE_REQUISITO VALUES (104, 5, 4);
  85.  
  86.  
  87. -- VERIFICAR SE O VALOR TA NA LISTA
  88. SELECT ARRAY[1] <@ ARRAY [1,2,4]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement