Trigger para gravação de LOG
Boa noite pessoal,
Sou novato no mundo Oracle e estou com dificuldades em criar uma trigger que toda vez que um produto for alterado, deverá criar um registro de LOG.
Criei a trigger abaixo porém não tenho certeza de que estar certa, pois esta apresentando a mensagem "2/48 PL/SQL: ORA-00984: coluna não permitida aqui" na linha os está AFTER UPDATE OR INSERT ON PRODUTO.
CREATE OR REPLACE TRIGGER CREATE_LOG
AFTER UPDATE OR INSERT ON PRODUTO
FOR EACH ROW
BEGIN
INSERT INTO LOG VALUES (NEXTVAL,''02/10/2018'', "log criada" );
end;
Além disso, no insert, coloquei apenas uma data simbolica, pois tem que inserir a data atual e não faço ideia de como fazer isso.
Segue estrutura da tabela LOG:
IDLOG NUMBER(38,0)
DATA DATE
DESCRICAO VARCHAR2(255 BYTE)
podem me ajudar por favor ?
Sou novato no mundo Oracle e estou com dificuldades em criar uma trigger que toda vez que um produto for alterado, deverá criar um registro de LOG.
Criei a trigger abaixo porém não tenho certeza de que estar certa, pois esta apresentando a mensagem "2/48 PL/SQL: ORA-00984: coluna não permitida aqui" na linha os está AFTER UPDATE OR INSERT ON PRODUTO.
CREATE OR REPLACE TRIGGER CREATE_LOG
AFTER UPDATE OR INSERT ON PRODUTO
FOR EACH ROW
BEGIN
INSERT INTO LOG VALUES (NEXTVAL,''02/10/2018'', "log criada" );
end;
Além disso, no insert, coloquei apenas uma data simbolica, pois tem que inserir a data atual e não faço ideia de como fazer isso.
Segue estrutura da tabela LOG:
IDLOG NUMBER(38,0)
DATA DATE
DESCRICAO VARCHAR2(255 BYTE)
podem me ajudar por favor ?
Caique
Curtidas 2
Melhor post
Ricardo Pestana
17/10/2018
bom dia,
Esse insert funciona fora da trigger?
Acredito que vc tenha que informar o nome da sequence antes do nextval, tenta direto no sql alterando a aspas duplas para simples conforme abaixo:
INSERT INTO log VALUES (NOME_DA_SEQUENCIA.nextval, '05/10/2018', 'log criada' );
Esse insert funciona fora da trigger?
Acredito que vc tenha que informar o nome da sequence antes do nextval, tenta direto no sql alterando a aspas duplas para simples conforme abaixo:
INSERT INTO log VALUES (NOME_DA_SEQUENCIA.nextval, '05/10/2018', 'log criada' );
GOSTEI 2
Mais Respostas
Emerson Nascimento
16/10/2018
para obter a data, utilize SYSDATE
GOSTEI 1
Caique
16/10/2018
Obrigado Ricardo! deu certo.
Criei uma sequence para o nextval.
Porém para efeito de melhoria na descrição do LOG, quero que no insert, na coluna "Descricao" (último campo após o SYSDATE no insert da trigger abaixo) seja exibido o id do produto que foi alterado e o campo que foi alterado, como por exemplo 'Produto (ID produto) alterado (ex. Quantidade)' . É possível ?
Abaixo segue trigger criada.
CREATE OR REPLACE TRIGGER CREATE_LOG
AFTER UPDATE OR INSERT ON PRODUTO
FOR EACH ROW
BEGIN
INSERT INTO LOG VALUES (IDLOG.NEXTVAL,SYSDATE, 'Produto Alterado');
end;
Muito obrigado pela ajuda.
Criei uma sequence para o nextval.
Porém para efeito de melhoria na descrição do LOG, quero que no insert, na coluna "Descricao" (último campo após o SYSDATE no insert da trigger abaixo) seja exibido o id do produto que foi alterado e o campo que foi alterado, como por exemplo 'Produto (ID produto) alterado (ex. Quantidade)' . É possível ?
Abaixo segue trigger criada.
CREATE OR REPLACE TRIGGER CREATE_LOG
AFTER UPDATE OR INSERT ON PRODUTO
FOR EACH ROW
BEGIN
INSERT INTO LOG VALUES (IDLOG.NEXTVAL,SYSDATE, 'Produto Alterado');
end;
Muito obrigado pela ajuda.
GOSTEI 0
Emerson Nascimento
16/10/2018
INSERT INTO LOG VALUES (IDLOG.NEXTVAL,SYSDATE, 'Produto ' || cast(:NEW.IDPRODUTO as varchar(10)) || ' alterado' );
GOSTEI 2
Kevlyn Godoy
16/10/2018
Olá Concurseiros
Venha participar do Aniversário do Maior Site de Rateios do Brasil,
O aniversário é do Concurseiros Unidos,
mas o presente quem ganha é você!
Desconto de 30% a 70% em todo o site!
Corre aproveitar antes que termine!
5541991115296
Venha participar do Aniversário do Maior Site de Rateios do Brasil,
O aniversário é do Concurseiros Unidos,
mas o presente quem ganha é você!
Desconto de 30% a 70% em todo o site!
Corre aproveitar antes que termine!
5541991115296
GOSTEI 0
Kevlyn Godoy
16/10/2018
Olá Concurseiros
Venha participar do Aniversário do Maior Site de Rateios do Brasil,
O aniversário é do Concurseiros Unidos,
mas o presente quem ganha é você!
Desconto de 30% a 70% em todo o site!
Corre aproveitar antes que termine!
5541991115296
Venha participar do Aniversário do Maior Site de Rateios do Brasil,
O aniversário é do Concurseiros Unidos,
mas o presente quem ganha é você!
Desconto de 30% a 70% em todo o site!
Corre aproveitar antes que termine!
5541991115296
GOSTEI 0
Caique
16/10/2018
Demais Emerson! Muito obrigado pela ajuda!
GOSTEI 0
Arilson
16/10/2018
CAIQUE, COMO FICOU O SEU CODIGO FINAL ?
GOSTEI 0