Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, como faço para criar uma trigger para UPDATE e DELETE na minha tabela de PRODUTO informando tudo que foi editado e deletado na minha tabela de LOG.
fiz uma trigger de INSERT e está informando direitinho na minha tabela de LOG
SET TERM ^
CREATE TRIGGER TRIG_PRODUTO_INSERT FOR PRODUTO
ACTIVE AFTER INSERT
AS
DECLARE VARIABLE CODIGOPRODUTO INTEGER;
DECLARE VARIABLE DESCRICAO VARCHAR(50);
DECLARE VARIABLE UNIDADE VARCHAR(10);
DECLARE VARIABLE CODIGOCATEGORIA INTEGER;
DECLARE VARIABLE VALORUNIT DECIMAL(10,2);
DECLARE VARIABLE OPERACAO VARCHAR(40) = 'INSERT';
DECLARE VARIABLE USUARIOLOGADO VARCHAR(40);
DECLARE VARIABLE DATAOCORRENCIA VARCHAR(30);
BEGIN
CODIGOPRODUTO = (SELECT MAX(CODIGO_PRODUTO) FROM PRODUTO);
DESCRICAO = (SELECT DESCRICAO FROM PRODUTO WHERE CODIGO_PRODUTO = (SELECT MAX(CODIGO_PRODUTO) FROM PRODUTO));
UNIDADE = (SELECT UNIDADE FROM PRODUTO WHERE CODIGO_PRODUTO = (SELECT MAX(CODIGO_PRODUTO) FROM PRODUTO));
CODIGOCATEGORIA = (SELECT CODIGO_CATEGORIA FROM PRODUTO WHERE CODIGO_PRODUTO = (SELECT MAX(CODIGO_PRODUTO) FROM PRODUTO));
VALORUNIT = (SELECT VALOR_UNIT FROM PRODUTO WHERE CODIGO_PRODUTO = (SELECT MAX(CODIGO_PRODUTO) FROM PRODUTO));
USUARIOLOGADO = (SELECT MON$USER FROM MON$ATTACHMENTS);
DATAOCORRENCIA = (SELECT CURRENT_DATE FROM PRODUTO);
INSERT INTO OCORRENCIAS VALUES (:CODIGOPRODUTO, :DESCRICAO, :UNIDADE, :CODIGOCATEGORIA, :VALORUNIT, :OPERACAO, :USUARIOLOGADO, :DATAOCORRENCIA);
END^
fiz praticamente a mesma coisa para as trigges de UPDATE e DELETE, só que está sempre pegando o ultimo registro
como faço para sempre pegar o registro que estou dando um UPDATE ou DELETE ???
Obrigado !!!
Obrigado Motta, Ajudou Bastante !!!
http://www.firebirdsql.org/refdocs/langrefupd15-create-trigger.html
http://www.firebirdsql.org/refdocs/langrefupd21-ddl-trigger.html
Nao conheço FB mas creio que uma trigger bastaria, seria de