Inquiridor
TRIGGER para update, log dos dados anteriores ao update

Pergunta
-
ola pessoal
a duvida é a seguinte
quero que qdo alguem altere os dados de uma tabela seja inserido os dados anteriores ao update
por exemplo
tenho a tabela teste
CREATE TABLE Teste (
ID int,
nome varchar (50)
)
insert into teste values (5,'velho')caso eu faco um update
update teste
set nome = 'alterado'
where id = 5
eu quero que o valor da tabela teste (5,velho) seja inserido em outra tabela para eu ter um controle das modificacoes. isso é possivel?li sobre o IF UPDATE(nome)
porem eu tenho muitas colunas na tabela, entao quero a qualquer modificacao em qualquer coluna
acho que é so
T+ pessoalfalow
sexta-feira, 8 de setembro de 2006 16:54
Todas as Respostas
-
Krusst,
Create Trigger T_Atualizar
For Update
On SuaTeste
As
Set NoCount On
Insert Into Teste2
Select Nome From Teste Inner Join Inserted
On Teste.Id = Inserted.Id
sexta-feira, 8 de setembro de 2006 19:01Moderador -
vc pode fazer referencia a tabela DELETED... se quizer eu monto um exemplo para vc....
abs
segunda-feira, 11 de setembro de 2006 20:08 -
ola andre
se tu puder mandar um exemplo eu agradeço
T+ cara e obrigado novamenteterça-feira, 12 de setembro de 2006 12:14 -
Krusst,
O exemplo que eu te passei não ajudou?
terça-feira, 12 de setembro de 2006 12:34Moderador -
Um pouco
o problema é que ele insere o valor que o usuario esta cadastrado na hora e nao o valor antigo.
por exemplo se o nome era "nome1" e o usuario vai alterar para "nome2" eu preciso que guarde o valor "nome1" na tabela de historico.
mais value junior, com o seu codigo eu tenho um pouco de redundancia, mais tenho o historico que preciso
mais se conseguir dessa outra forma como te disse, eu nao tenho mais essa redundancia...
falow cara t+
e obrigadoterça-feira, 12 de setembro de 2006 12:59 -
Krusst,
Realmente se você trabalhar com a table Inserted vai acontecer esta caso de ter o novo valor e não o velho.
Mas como o André observou a table Deleted pode te ajudar.
Se precisar estou a disposição.
terça-feira, 12 de setembro de 2006 13:10Moderador -
so uma duvida
AO fazer o update o valor antigo é considerado "deleted"?
se eu pegar o valor deleted ou ter o valor antigo?
desculpa perguntar e nao testar mais nesse momento nao estou no pc
so mais tarde que vou mecher nisso.
Falow e obrigado
T+terça-feira, 12 de setembro de 2006 13:22 -
Krusst,
Quando se faz um Update você pode utilizar tanto a Inserted com a Deleted, no caso de se recuperar o valor antigo ele esta armazenado na Deleted no novo na Inserted.
terça-feira, 12 de setembro de 2006 13:47Moderador -
Obrigado Junior e Andre
conseguir fazer o que queria.
segue o codigo de como fico.
CREATE TRIGGER TR_Teste
On Teste
For Update
As
Set NoCount OnInsert Into Teste_hist
Select Deleted.id,Deleted.Nome
From Teste Inner Join Deleted On
Teste.Id = Deleted.Idobrigado pela ajuda dos 2
e T+
FALOWterça-feira, 12 de setembro de 2006 14:21