-- O que deve ser entregue para cada Gatilho implementado?
--
-- Este documento orienta o que deve ser gerado para cada Gatilho proposto e resolvido no Projeto-2
-- da discplina IBD100-Laboratório de Banco de Dados (Escolha 1)
-- Antes de qualquer dica...
-- Carregue o seu editor de programação e crie um novo documento para cada Gatilho que você fará.
-- Este novo documento irá guardar o registro de UM Gatilho.
-- 
-- Apresento o caminho de migalhas e a seguir um exemplo desenvolvido.
-- Acesse o pgAdmin 4
-- --------------------------------------------------------------------------------------------------------------------------------------------------
-- Registro de uma FUNÇÃO DE GATILHO (Trigger Function ou TF)
-- Migalhas: Base de Dados+Schemas+public+Triggers Functions
-- Marque a TF que você vai documentar e
-- Clique na aba SQL (no alto do painel da direita).
-- Coloque o curso do mouse sobre o painel da direita e a seguir digite Ctrl+A e a seguir Ctrl+C
-- Alterne o Controle de Execução para o editor. No novo documento execute Ctrl-V.
-- Um exemplo da aba SQL pode ser...
CREATE OR REPLACE FUNCTION public."autoresBI"()
    RETURNS trigger
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE NOT LEAKPROOF
AS $BODY$
declare
  vmax smallint;
begin
-- Pegar o valor máximo do campo pkautor de autores
select MAX(pkautor) INTO vmax from autores;
-- Verificando se a variável vmax tem valor.
IF ( vmax is null )
THEN
   NEW.pkautor:=1;
ELSE
   NEW.pkautor:=vmax+1;
END IF;
return new;
end;
$BODY$;

ALTER FUNCTION public."autoresBI"()
    OWNER TO postgres;

COMMENT ON FUNCTION public."autoresBI"()
    IS 'Determina o próximo valor da chave pkautor (incrementado de 1 unidade)';
-- Fim do segmento de código copiado da Aba SQL
-- 
-----------------------------------------------------------------------------------------------------------------------------------------------------
-- Registro de um GATILHO (Trigger)
-- Migalhas: Base de Dados+Schemas+Tables+sinal '>' na Tabela Escolhida+Triggers+Marque o Trigger para documentar.
-- Sobre o componente marcado clique na Aba SQL no painel da direita.
-- Coloque o curso do mouse sobre o painel da direita e a seguir digite Ctrl+A e a seguir Ctrl+C
-- Alterne o Controle de Execução para o editor. No novo documento execute Ctrl-V.
-- Um exemplo da aba SQL pode ser...
-- 
CREATE OR REPLACE TRIGGER "BIautores"
    BEFORE INSERT
    ON public.autores
    FOR EACH ROW
    EXECUTE FUNCTION public."autoresBI"();