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 c3s1nha
      Boa tarde,
       
      Preciso restaurar a estrutura de um banco de dados (tabelas,views,procedures.. etc) em outro banco de dados que esta vazio (nao tem tabela nenhuma, banco novo), utilizo o sql server. Consigo fazer utilizando o SSMS ?
       
      Para entender melhor estou enviando uma imagem.
       
       
      O banco com todas tabelas,viwes,procedures, registros, etc..  é o Guara_ que esta no servidor   .\SQLEXPRESS   quero fazer uma copia identica dele no banco Nutri no servidor sdb.hsi.
       
      Desde ja agradeço. 

    • By c3s1nha
      Boa tarde,
      Gostaria de somar os valores das colunas D, D1, V1, V2, V3, V4 no final da tabela, é possivel ?
       
      Estou utilizando a seguindo query:
       
      SELECT
      CONVERT(CHAR(10), Discos.Discos_sdt_Data, 103) As [Data],           
      COUNT(DISTINCT Discos.Pessoa_lng_Codigo) as [D], 
      COUNT(Discos.Discos_lng_Sequencia) AS [D1], 
      REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(SUM(Discos.Discos_mon_Valor), 2)))), '.', ',') as [V1],
      REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(SUM(Discos.Discos_mon_Valor)/COUNT(Discos.Discos_lng_Sequencia), 2)))), '.', ',') AS [V2],
      REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(Sum (Discos.Discos_mon_Tarifa), 2)))), '.', ',') As [V3],
      REPLACE(RTRIM(LTRIM(CONVERT(CHAR(20), ROUND(SUM(Discos.Discos_mon_Tarifa)/COUNT(Discos.Discos_lng_Sequencia), 2)))), '.', ',') AS [V4]  
      FROM Discos
      Group By Discos.Discos_sdt_Data
      Having (((Discos.Discos_sdt_Data) Between '2019-01-01' And '2019-01-10'))
      Order By [D]
       
      Com este codigo consigo a somatorio conforme imagem, porem, queria adicionar um a somatoria total no final das colunas.

       
       
      Por favor, poderiam me ajudar.
    • By cfreis01
      eu tenho uma tabela  funcionário com uma coluna salário e criei uma nova coluna do tipo salário eu pensei em uma trigger
      para que todas as vezes que um funcionário receba um aumento, nessa nova coluna seja registrada a quantia do último aumento recebido
      mas quando executo o update da erro;
      outra duvida dentro do update como o update sabe que é só deste  funcionario? o que colocar na clausula where dentro da trigger?
      CREATE OR REPLACE TRIGGER new_salario_emp BEFORE UPDATE ON emp FOR EACH ROW -- DECLARE salario number; BEGIN salario := :new.sal - :OLD.sal; -- update emp set old_salario = salario; commit; -- END;  
    • By Fábão Ramos
      Boa tarde Pessoal!! estou com um problema que acho que sou o único com este mesmo problema kkkk pois procurei em tudo que foi lugar um esclarecimento de como resolver e nada.
      Bom vamos ao que importa.
      tenho um formulário em metodo post que será auto preenchido depois que eu conseguir aplicar o que tenho a duvida.
       
      <form action="caixa.php" method="post">
      <B>Selecione a Refeição:</B><br>
      <input type=checkbox name="pratos[]" value="Feijão"> Feijão<br>
      <input type=checkbox name="pratos[]" value="Arroz"> Arroz<br>
      <input type=checkbox name="pratos[]" value="Fritas"> Fritas<br>
      <input type=checkbox name="pratos[]" value="Farofa"> Farofa<br>
      <input type=checkbox name="pratos[]" value="Bife"> Bife<br>
      <input type=checkbox name="pratos[]" value="frango"> frango<br>
      <input type=checkbox name="pratos[]" value="ovo"> ovo<br>
      <input type=checkbox name="pratos[]" value="Churrasco"> Churrasco<br><BR>
      <input type=submit>
      </form>
      <?php
      $pratos = isset($_POST['pratos']) ? $_POST['pratos'] : '';    
      if(!$pratos!="Registrar")
      {
      // Verifica se usuário escolheu algum número
      if(isset($_POST["pratos"]))
      {
         foreach($_POST["pratos"] as $complemento)
          {
              echo "- " . $complemento . "<BR>";
          }
          
      }
      else
      {
          echo "Você não escolheu Seu Prato ainda!<br>";
      }}
      ?>
      esta meio zuado pq sou bem novato mais esta funcionando o resultado do "checkbox" esta vindo só que separadamente preciso unir os dados pois a aplicação dele será imput em sql server para que os pedidos ja saiam no monitor dentro da cozinha com as opções escolhidas sei que não é muito difícil colocar " $complemento[0].$complemento[1].$complemento[2] etc.. pelo que vi seria mais ou menos assim que eu agruparia o valor mais existe um problema o Form será auto preenchido por uma busca em sql server pois existe feijão preto feijão branco feijão mulatinho etc... e ter que preencher isso tudo sem nem ao menos saber se vai ter este prato no dia é bem inviável e a qtd de linhas será absurda então preciso agrupar o resultado para aplicar o envio do mesmo para o sql server indiferente das opções escolhidas se puderem me ajudar agradeço.
       
      este é o mesmo arquivo esta mostrando o resultado onde cadastra só para ficar mais rápido o desenvolvimento caixa.php
    • By gei
      Boa noite.
      Tenho um display que deverá exibir produtividade de alguns setores por dia, Mês, e retornar o percentual de meta de acordo com os valores dos dias, semanas e meses.
      O total diário está tranquilo mas, como retornar o total  semanal, mensal e percentual alcançado?
      Estou há mais de uma semana tentando resolver.
      Estou usando o SQLSERVER 2017.
      Se alguém puder ajudar agradeço.
       
      SELECT REGISTRO_ATENDIMENTO_INTERNO_PSP.UsuarioInsert, DEPARTAMENTOS.NomeDepartamento,
      COUNT(REGISTRO_ATENDIMENTO_INTERNO_PSP.DataAtendimento) AS "Total Diário", COUNT(REGISTRO_ATENDIMENTO_INTERNO_PSP.DataAtendimento) AS "Total Semanal", COUNT(REGISTRO_ATENDIMENTO_INTERNO_PSP.DataAtendimento) AS "Total Mensal" FROM REGISTRO_ATENDIMENTO_INTERNO_PSP  INNER JOIN DEPARTAMENTOS  ON REGISTRO_ATENDIMENTO_INTERNO_PSP.IdDepartamento=DEPARTAMENTOS.IdDepartamento INNER JOIN COLABORADOR ON REGISTRO_ATENDIMENTO_INTERNO_PSP.IdFunc=COLABORADOR.IdFunc where convert(char(10),DataAtendimento,103) = convert(char(10),getdate(),103) GROUP BY REGISTRO_ATENDIMENTO_INTERNO_PSP.UsuarioInsert, DEPARTAMENTOS.NomeDepartamento 
×

Important Information

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