quinta-feira, 20 de setembro de 2018

Trigger no PostgreSQL


Abaixo está um exemplo dos comandos PL/SQL utlizados para criar um gatilho no banco de dados de tal maneira que ao inserir ou atualizar uma linha de registro serão populadas duas colunas concatenando dados já existentes no registro.

Neste caso estão sendo concatenados numeros com zeros a direita para compor um atributo do tipo varchar. Este exemplo foi escrito pelo Dr. Gilberto Queiroz Ribeiro


CREATE OR REPLACE FUNCTION focos_bdq_c2_insert()
RETURNS trigger AS $$
BEGIN
NEW.complete_id_state := concat(lpad(NEW.id_0::character varying::text, 4, '0'::text),
lpad(NEW.id_1::character varying::text, 3, '0'::text))::varchar;

NEW.complete_id_munic := concat(lpad(NEW.id_0::character varying::text, 4, '0'::text),
lpad(NEW.id_1::character varying::text, 3, '0'::text),
lpad(NEW.id_2::character varying::text, 8, '0'::text))::varchar;

RETURN NEW;
END;
$$ LANGUAGE plpgsql;


CREATE TRIGGER focos_bdq_c2_insert BEFORE INSERT OR UPDATE ON focos_bdq_c2 FOR EACH ROW EXECUTE PROCEDURE focos_bdq_c2_insert();