/bin/laden
(usa Void Linux)
Enviado em 05/06/2017 - 15:16h
CREATE PROCEDURAL LANGUAGE plpgsql;
-- Tabela que tera uma trigger associada
CREATE TABLE tb_login (
id SERIAL,
nome VARCHAR(255) NOT NULL,
login VARCHAR(64) NOT NULL,
senha VARCHAR(32) NOT NULL,
data DATE DEFAULT NULL,
CONSTRAINT pk_id_usuario PRIMARY KEY(id)
);
-- Funcao que sera chamada quando a trigger for disparada
CREATE FUNCTION fc_insere_data() RETURNS TRIGGER AS '
BEGIN
UPDATE tb_login SET data = now() WHERE id = NEW.id;
RETURN new;
END
' LANGUAGE plpgsql;
-- Criando a trigger, definindo sua acao e a qual tabela ela sera associada.
CREATE TRIGGER tg_insere_data AFTER INSERT ON tb_login FOR EACH ROW EXECUTE PROCEDURE fc_insere_data();
O que isso faz basicamente é:
Ao se inserir nos usuários na tabela "tb_login", a data de inserção dos mesmos é feita de forma automática pela trigger "tg_insere_data".
Exemplo:
-- Populando a tabela (veja que não passei a data!):
INSERT INTO tb_login (nome, login, senha) VALUES ('Fulano de Tal da Silva', 'fulano.silva', md5('123abc'));
-- Visualizando os dados da tabela:
SELECT * FROM tb_login;
Isso já dá uma ideia básica sobre triggers.
Qualquer dúvida, na net tá cheio de tuto sobre isso cara. É só pesquisar um pouco. ;)