Jump to content
Leandro de Jesus

Comparar campos após o Trigger

Recommended Posts

Senhores muito boa tarde,

Preciso de uma luz.

 

 

Depois de executar o trigger

Preciso comparar os campos de duas tabelas

 

Então após atualizar a tabela px_pedidos eu pego os dados e coloco px_pedidos_log e depois preciso comparar os campos

O código abaixo funciona, só não consigo comparar.

 

DROP TRIGGER IF EXISTS `LogPedido`;
CREATE DEFINER=`root`@`localhost` TRIGGER `LogPedido` BEFORE UPDATE ON `px_pedidos` 
FOR EACH ROW 
insert into px_pedidos_log select * from px_pedidos WHERE id=NEW.id

 

Logo após tentei  e não foi 


 

IF(NEW.campo != OLD.campo) THEN

        UPDATE px_pedidos SET alteracoes +=1 WHERE id=NEW.id;

END IF;

 

Alguém pode me dar um caminho ? Já rodei a internet mas não estou conseguindo implantar isso.

 

Abs e obrigado

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By gcors88
      Prezados, desenvolvi um gatilho onde este tem comunicação com outra tabela, uma é a coleta_sinal_vital, e onde o gatilho foi criado é na table  itcoleta_sinal_vital ( esta possui uma fk da primeira), a questão é que dentro do gatilho realizo um select na primeira tabela para consultar o valor inserido em uma coluna da primeira tabela, faço essa consulta baseada nessa fk que esta sendo inserida ou seja where = :new.cd_coleta_sinal_vital, a questão é que no momento em que esse select é executado ele não retorna dado nenhum, acredito que isto ocorre porque a inserção em ambas as tabelas é feito de forma simultânea, pois se comparado posteriormente o valor da coluna sempre é inserido, gostaria de saber se existe alguma forma de aplicar uma espera ou atraso neste gatilho para que ele possa capturar este valor sem problemas, grato!
    • By José Peixoto
      Olá,
       
      há alguma forma de fazer uma trigger só ser executada depois que a outra executar? 
       
      Por exemplo: a trigger2 só é disparada quando a trigger1 fizer o commit das informações.
       
      Obrigado desde já :)
    • By pablwo
      CREATE TABLE FUNCIONARIO( MATRICULA NUMBER PRIMARY KEY, NOME VARCHAR2(100) ); CREATE TABLE DEPENDENTE( CPF VARCHAR2(14) PRIMARY KEY, NOME VARCHAR2(100), MATRICULA_FUNCIONARIO NUMBER, CONSTRAINT fk_dependente_matricula FOREIGN KEY (matricula_funcionario) REFERENCES FUNCIONARIO(matricula) ); CREATE OR REPLACE TRIGGER QUANTIDADE_DE_DEPENDENTE BEFORE INSERT OR UPDATE ON DEPENDENTE FOR EACH ROW BEGIN IF:NEW.MATRICULA_FUNCIONARIO IN (SELECT MATRICULA_FUNCIONARIO FROM DEPENDENTE HAVING COUNT(MATRICULA_FUNCIONARIO) >= 3 GROUP BY MATRICULA_FUNCIONARIO) THEN RAISE_APPLICATION_ERROR(-20000, 'Funcionario Excedeu a Quantidade de Dependentes'); END IF; END; Boa noite, estou com dificuldades em criar triggers no sql oracle. Minha dificuldade é criar um trigger que so permita que um funcionario tenha no maximo 3 dependetes, acredito que o erro seja no select dentro do if, quando eu troco por valores como (1,2,3) esses valores servem como matriculas de funcionários que não é mais permitido adicionar dependentes.
    • By RVenancio
      Fiz uma trigger pra atualizar o valor do salário montante de uma agencia de banco usando o seguinte código:
       
      CREATE DEFINER = CURRENT_USER TRIGGER `NB`.`Funcionario_AFTER_INSERT` AFTER INSERT ON `Funcionario` FOR EACH ROW
      BEGIN
       
      UPDATE agencia a SET salarioMont = (SELECT SUM(salario) FROM funcionario f WHERE f.idAg = a.idAgencia)
      WHERE a.idAgencia = new.idAg;
       
      END
       
      o problema em si é que estou obtendo o erro: "Error Code: 1054. Unknown column 'idAg' in 'NEW'" quando vou executar o scritp.
       
    • By SILVASS
      Ola,  ja começo pedindo desculpa por mais esse tópico, mas eu realmente não consegui achar nada que me ajudasse.
      Eu preciso criar uma trigger ou qualquer outro procedimento, que me permite incluir todos os dados da tabela principal na tabela histórico a cada alteração/inserção.
       
       
      Está é a trigger que tenho, ela só me retorna o dado alterado/inserido.
          FOR UPDATE, INSERT  AS    BEGIN        SET NOCOUNT ON        INSERT INTO tb_historico  (id_beneficio, habitantes, ano, dh_update)            SELECT id_beneficio, habitantes, ano,  GETDATE()            FROM INSERTED            END
      O dados na minha tabela são os seguintes:
      id     habitante    ano
      1    10000     2019
      2    20000     2019
      3    30000     2019


      Alterei a primeira linha
      id     habitante    ano
      1    50000    2019
      2    20000     2019
      3    30000     2019


      preciso que além do dado alterado, me retorne os dados que não sofreram nenhuma modificação
      id     habitante    ano     
      1    50000    2019
      2    20000     2019
      3    30000     2019


      Hoje o retorno dela seria apenas o dado alterado.
      id     habitante    ano
      1    50000    2019  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.