Usuário com melhor resposta
Trigger de monitoria de atualização de registros

Pergunta
-
Bom dia,
Estou precisando de uma ajuda com um trigger, preciso que a trigger atualize uma coluna na tabela toda vez que aquela linha sofre alguma atualização,
preciso guardar a data da ultima atualização feita naquele registro, eu comecei a montar a trigger mas nao consegui terminar ela.
create trigger UpdateTabelaGeralProdutos on TabelaGeralProdutos
after update
AS
update TabelaGeralProdutos set DataUltimoUpdate = GETDATE()- Editado Odair J. Santos sexta-feira, 2 de março de 2012 14:28
Respostas
-
Bom dia Odair,
Segue um exemplo simples para atualização da data de um registro quando o mesmo for alterado.
-- trigger para alteração CREATE TRIGGER tru_teste ON teste AFTER UPDATE AS BEGIN UPDATE a SET data_alteracao = GETDATE() FROM teste a INNER JOIN inserted b on b.codigo = a.codigo -- chave primária da minha tabela END
Você deve usar um campo que seja o identificador do seu registro para que a trigger "entenda" qual registro você está querendo atualizar a data.
Espero ter ajudado.
[]'s
Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */
- Marcado como Resposta Odair J. Santos sexta-feira, 2 de março de 2012 17:09
Todas as Respostas
-
Bom dia Odair,
Segue um exemplo simples para atualização da data de um registro quando o mesmo for alterado.
-- trigger para alteração CREATE TRIGGER tru_teste ON teste AFTER UPDATE AS BEGIN UPDATE a SET data_alteracao = GETDATE() FROM teste a INNER JOIN inserted b on b.codigo = a.codigo -- chave primária da minha tabela END
Você deve usar um campo que seja o identificador do seu registro para que a trigger "entenda" qual registro você está querendo atualizar a data.
Espero ter ajudado.
[]'s
Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */
- Marcado como Resposta Odair J. Santos sexta-feira, 2 de março de 2012 17:09
-
Olá Odair,
Segue um exemplo completo de como fazer sua trigger.
Por favor, não esqueça de avaliar a resposta.
abraços.
IF EXISTS(SELECT NAME FROM SYS.tables WHERE NAME = 'PRODUTO') DROP TABLE DBO.PRODUTO GO CREATE TABLE DBO.PRODUTO( ID INT IDENTITY(1,1), PRODUTO VARCHAR(100), STATUS CHAR(1) ) GO INSERT INTO DBO.PRODUTO VALUES ('TESTE','N'), ('TESTE2','N'), ('TEST3','S') GO --TABELA DE LOG IF EXISTS(SELECT NAME FROM SYS.tables WHERE NAME = 'TB_UPDATE') DROP TABLE DBO.TB_UPDATE GO CREATE TABLE DBO.TB_UPDATE ( ID INT IDENTITY(1,1), CAMPO VARCHAR(100), VALOR_ANTIGO VARCHAR(100), VALOR_NOVO VARCHAR(100) ) GO --TRIGGER LOG IF EXISTS(SELECT NAME FROM SYS.triggers WHERE name = 'TG_UPDATE') DROP TRIGGER TG_UPDATE GO CREATE TRIGGER TG_UPDATE ON PRODUTO AFTER UPDATE AS BEGIN SET NOCOUNT ON IF UPDATE(STATUS) BEGIN DECLARE @DELETED_STATUS VARCHAR(100) = (SELECT STATUS FROM inserted) DECLARE @INSERTED_STATUS VARCHAR(100) = (SELECT STATUS FROM deleted) INSERT INTO DBO.TB_UPDATE (CAMPO, VALOR_ANTIGO, VALOR_NOVO) VALUES ('STATUS',@DELETED_STATUS, @INSERTED_STATUS) END END GO --EXECUTA UM UPDATE UPDATE TOP(1) PRODUTO SET status = 'N' GO --VE OS REGISTROS ALTERADOS SELECT * FROM DBO.TB_UPDATE
Dhiego Piroto - MCP | MCTS SQL Server 2008 Developer | Email: dhiegopiroto@gmail.com
-