Skip to content

Instantly share code, notes, and snippets.

@fabioebner
Created September 23, 2020 23:16
Show Gist options
  • Save fabioebner/458680949a66f71c9ea2ed8d55b5cb2e to your computer and use it in GitHub Desktop.
Save fabioebner/458680949a66f71c9ea2ed8d55b5cb2e to your computer and use it in GitHub Desktop.
CREATE OR REPLACE FUNCTION atualiza_folha_termo() RETURNS TRIGGER AS $BODY$
DECLARE
ultima_folha_termo_var integer;
proxima_folha_var integer;
ultimo_termo db_firma.tb_etiqueta%rowtype;
rand_var bigint;
BEGIN
IF EXISTS (SELECT * FROM db_firma.tb_configuracao_firma) THEN
SELECT INTO ultima_folha_termo_var ultima_folha_termo FROM db_firma.tb_configuracao_firma;
IF (NEW.nm_adquirente IS NOT NULL) THEN
SELECT * INTO ultimo_termo FROM db_firma.tb_etiqueta WHERE nr_livro_etiqueta IS NOT NULL ORDER BY nr_livro_etiqueta::int DESC, nr_folha::int DESC LIMIT 1;
proxima_folha_var := ultimo_termo.nr_folha::int + 1;
IF (proxima_folha_var > ultima_folha_termo_var) THEN
NEW.nr_folha = 1;
NEW.nr_livro_etiqueta = ultimo_termo.nr_livro_etiqueta::int + 1;
ELSE
NEW.nr_folha = proxima_folha_var;
NEW.nr_livro_etiqueta = ultimo_termo.nr_livro_etiqueta;
END IF;
END IF;
RETURN NEW;
ELSE
RETURN NULL;
END IF;
END;
$BODY$
LANGUAGE 'plpgsql';
CREATE TRIGGER atualiza_folha_termo_trigger
BEFORE INSERT ON db_firma.tb_etiqueta
FOR EACH ROW
EXECUTE PROCEDURE atualiza_folha_termo();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment