Pessoal eu quero fazer um gatilho que cadastre o nome do usuario que logou no sistema e a hora, até agora conseguir somente o usuário logado no banco, que como uso HIBERNATE, vai se o usuário da conexão quero o usuário da sessão…
[code]-- Function: empregado_gatilho()
– DROP FUNCTION empregado_gatilho();
CREATE OR REPLACE FUNCTION empregado_gatilho()
RETURNS trigger AS
$BODY$
BEGIN
--Verifica se foi fornecido o nome e o salario do empregado
IF NEW.nome IS NULL THEN
RAISE EXCEPTION 'O nome do empregado nao pode ser nulo';
END IF;
IF NEW.salario IS NULL THEN
RAISE EXCEPTION '%O nao pode ter um salario nulo', NEW.nome;
END IF;
-- Quem paga para trabalhar
IF NEW.salario < 0 THEN
RAISE EXCEPTION '% Nao pode ter um salario negativo', NEW.nome;
END IF;
-- Registra quem apagou a folha de pagamento e quando
NEW.ultima_data := 'now';
NEW.ultimo_usuario := current_user;
RETURN NEW;
END;
$BODY$
LANGUAGE ‘plpgsql’ VOLATILE
COST 100;
ALTER FUNCTION empregado_gatilho() OWNER TO root;
[/code]
tabela:
-- Table: empregados
-- DROP TABLE empregados;
CREATE TABLE empregados
(
codigo integer NOT NULL,
nome character varying,
salario integer,
departamento_cod integer,
ultima_data date,
ultimo_usuario character varying,
CONSTRAINT pk_epregados PRIMARY KEY (codigo)
)
WITH (
OIDS=FALSE
);
ALTER TABLE empregados OWNER TO root;
-- Trigger: empregado_gatilho on empregados
-- DROP TRIGGER empregado_gatilho ON empregados;
CREATE TRIGGER empregado_gatilho
BEFORE INSERT OR UPDATE
ON empregados
FOR EACH ROW
EXECUTE PROCEDURE empregado_gatilho();
resultado é :
3;"pedro";10;;"2010-07-20";"root"