Jump to content
Robson Freitas

Criar Trigger para alterar registro somente na modificação de um campo em sql server

Recommended Posts

Tenho uma tabela de cadastro do SQL Server, tenho uma coluna que apresenta o status desse cadastro ('A','I','S','C').

 

Criei um campo com nome Update_data, que receberá um datatime toda vez que o cliente alterar o status do cadastro. Isso também vale para um insert.

 

Estou com dúvidas, pois nunca criei uma Trigger em sql server.

 

Ex: da minha tabela

 ID | Processo | status | Update_data

  1 | A33      | A      | null

2   | A34      | I      | null

3    | A55      |     A | null

 

Não consegui avançar no seguinte exemplo abaixo trigger: 

CREATE TRIGGER atualizaData

ON cadastro

AFTER INSERT,UPDATE

AS

IF INSERT OR UPDATE(status)

BEGIN
UPDATE cadastro SET Update_data = GETDATE()

WHERE id = id_que_foi_modifica/inserida

END

 

Ao final, será atualizado com a data atual somente se houver modificação ou inserção no campo da situação.

Share this post


Link to post
Share on other sites

creio que basta

 

CREATE TRIGGER atualizaData

ON cadastro

BEFORE INSERT,UPDATE

AS

BEGIN

  NEW.Update_data = GETDATE()

END;

 

Ao menos no Oracle é assim

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 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  
    • By Guiggs
      Fala, galera, preciso realizar a mesma lógica de cálculo da coluna F na imagem abaixo só que no sql server, porém, não faço ideia de qual função utilizar para realizar este cálculo entre linhas e colunas diferentes, sempre do dia anterior.
       

    • By Guiggs
      Boa tarde, Galera.
      Seguinte,
      Preciso de uma solução ou função para realizar o seguinte cálculo " (Backlog(dia anterior) + Abertos(dia atual)) - fechados(dia atual) = backlog(dia atual)" segue imagem da tabela abaixo. Nunca me deparei com esta situação de ter que calcular valores entre linhas de colunas diferentes. Li algo sobre Lead e Leg mas não consegui aplicar a solução ao que preciso, alguém consegue dar uma luz? Desde já, obrigado!! 
       

    • By Giovane Lopes
      Estou tentando fazer a seguinte SQL abaixo e o campo DATA_AGENDADA é um campo DATATIME, não consigo criar a contagem por dia, ele está contando por hora


      SELECT A.DATA_AGENDADA, count(A.DATA_AGENDADA) from os_agenda A where A.cod_empresa= 2 and A.data_agendada between ''20190901'' and ''20190930'' group by A.DATA_AGENDADA order by A.DATA_AGENDADA
×

Important Information

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