Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -------------------------------------------------------------------------------------------------------------------------------------------------------------
- -------------------------------------------------------------------------------------------------------------------------------------------------------------
- -------------------------------------------------------------------------------------------------------------------------------------------------------------
- -------------------------------------------------------------------------------------------------------------------------------------------------------------
- -------------------------------------------------------------------------------------------------------------------------------------------------------------
- -------------------------------------------------------------------------------------------------------------------------------------------------------------
- -------------------------------------------------------------------------------------------------------------------------------------------------------------
- SELECT * FROM PROFESSOR;
- SELECT * FROM CURSO;
- SELECT * FROM MODULO;
- SELECT * FROM PRE_REQUESITO;
- INSERT INTO PROFESSOR VALUES (1, 'PROFS', '123456', '1998-08-08', 'OPROFS321@GMAIL.COM', '123', 10000, '2000-01-01');
- INSERT INTO CURSO VALUES (1, 'CURSO', 'CURSO CURSO', 1000, 200, 15, TRUE, TRUE, 1);
- INSERT INTO MODULO VALUES (1, 'MATEMATICA', 'DESCRICAO', 100, 1);
- INSERT INTO MODULO VALUES (2, 'PORTUGUES', 'DESCRICAO', 120, 1);
- INSERT INTO MODULO VALUES (3, 'CIENCIAS', 'DESCRICAO', 150, 1);
- INSERT INTO MODULO VALUES (4, 'HISTORIA', 'DESCRICAO', 50, 1);
- INSERT INTO MODULO VALUES (5, 'GEOGRAFIA', 'DESCRICAO', 180, 1);
- CREATE FUNCTION VERIFICAR_VALIDADE_PRE_REQUISITO(COD_MODULO_ANALISADO INT, COD_MODULOS_PERCORRIDOS INT[])
- RETURNS BOOLEAN
- AS $$
- DECLARE
- REGISTROS_MODULO_PRE_REQUISITO RECORD;
- REGISTRO_MODULO_PRE_REQUISITO RECORD;
- BEGIN
- SELECT COD_MODULO_PRE_REQUISITO INTO REGISTROS_MODULO_PRE_REQUISITO FROM PRE_REQUISITO WHERE COD_MODULO_PRE_REQUISITO = COD_MODULO_ANALISADO;
- IF (SELECT ARRAY[COD_MODULO_ANALISADO] <@ COD_MODULOS_PERCORRIDOS) IS TRUE THEN
- RETURN FALSE;
- ELSE
- COD_MODULOS_PERCORRIDOS := COD_MODULOS_PERCORRIDOS || ARRAY[COD_MODULO_ANALISADO];
- FOR REGISTRO_MODULO_PRE_REQUISITO IN (SELECT * FROM REGISTROS_MODULO_PRE_REQUISITO)
- LOOP
- RAISE NOTICE 'VERIFICAR AGORA PARA: (%,%)', REGISTRO_MODULO_PRE_REQUISITO.COD_MODULO, COD_MODULOS_PERCORRIDOS;
- IF VERIFICAR_VALIDADE_PRE_REQUISITO(REGISTRO_MODULO_PRE_REQUISITO.COD_MODULO, COD_MODULOS_PERCORRIDOS) IS FALSE THEN
- RETURN FALSE;
- ELSE
- RETURN TRUE;
- END IF;
- END LOOP;
- RETURN TRUE;
- END IF;
- END
- $$ LANGUAGE plpgsql;
- CREATE FUNCTION EVENTO_INSERT_PRE_REQUISITO()
- RETURNS TRIGGER
- AS $$
- BEGIN
- IF VERIFICAR_VALIDADE_PRE_REQUISITO(NEW.COD_MODULO, ARRAY[]) IS FALSE THEN
- RAISE EXCEPTION 'VOCÊ NÃO PODE FAZER ESSA RELAÇÃO MODULO - MODULO_PRE_REQUISITO. PRE-REQUITOS ENTRAM EM IMPASSE!';
- ELSE
- RETURN NEW;
- END IF;
- END
- $$ LANGUAGE plpgsql;
- -------------------- OBS: PRE_REQUISITO E ATRIBUTOS TAO COM NOMES ERRADOS ---------------------
- CREATE TRIGGER TRIGGER_PRE_REQUISITO
- BEFORE INSERT
- ON PRE_REQUISITO FOR EACH ROW
- EXECUTE PROCEDURE EVENTO_INSERT_PRE_REQUISITO();
- -- VERIFICAR SE O VALOR TA NA LISTA
- SELECT ARRAY[1] <@ ARRAY [1,2,4]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement