Inserção de dados entre tabelas com trigger

09/06/2006

0

Bom dia para todos.

Por favor, estou precisando de ajuda para montar uma trigger. Estudei pelo livro que tenho, olhei todos os tópicos e até achei um postado pela scristina que se aproxima bastante do meu problema, mas eu não consegui entender. E tenho pra mim que o meu problema está relacionado justamente com as tabela inserted e deleted da trigger. Acho que eu não entendi direito como elas funcionam ou talvez eu não possa fazer o detalhe que quero com uma trigger.

Bom, sem mais delongas...

A trigger que fiz é seguinte:

CREATE TRIGGER T_TRANSF ON TITMMOV
AFTER INSERT AS
BEGIN
INSERT INTO TITMMOVRATDEP SELECT TITMMOV.CODCOLIGADA, TITMMOV.IDMOV, TITMMOV.NSEQITMMOV, TITMMOV.CODFILIAL,
TITMMOV.CODTB1FLX, TITMMOV.QUANTIDADE*TITMMOV.PRECOUNITARIO, 100 FROM TITMMOV
END


Eu preciso passar as informações da tabela TITMMOV para a TITMMOVRATDEP toda vez que a tabela TITMMOV receber novas informações. Tô achando que eu preciso colocar a tabela inserted em algum lugar. Já fiz uns testes mas não funcionou.

Alguém sabe o que devo fazer?

Desde já, agradeço e fico na torcida.

Valeu pessoal.


Ricardo78

Ricardo78

Responder

Posts

09/06/2006

Wcrivelini

Cara, me parece que vc está errando apenas no FROM.
Usando FROM TITMMOV, pra cada registro que vc inserir em TITMMOV, o trigger vai inserir TODOS os registros da tabela TITMMOV na tabela TITMMOVRATDEP

Me parece que o que vc queria fazer é só inserir o novo registro. Então use FROM INSERTED


Responder

09/06/2006

Ricardo78

Pois é amigão. Enquanto aguardava a resposta de alguém e depois de estudar sobre as tabelas inserted e deleted das triggers, resolvi trocar para ver se dava certo. Mas não funcionou. :(
Tô começando a achar que preciso detalhar mais o select do insert, pois alguns campos que necessito fazem parte da tabela TITMMOV mas tem origem em outras tabelas. Devo precisar fazer alguns relacionamentos, não acha?!
Se tiver alguma outra idéia, por favor, me avise. Toda ajuda será bem vinda e agradecida desde já. :wink:

Saudações a todos.


Responder

15/06/2006

Psergio.p

Caro amigo, você tem que fazer assim:

CREATE TRIGGER T_TRANSF ON TITMMOV
AFTER INSERT AS
BEGIN
INSERT INTO TITMMOVRATDEP SELECT CODCOLIGADA, IDMOV, NSEQITMMOV,CODFILIAL,
CODTB1FLX,QUANTIDADE*PRECOUNITARIO, 100 FROM inserted
END

:D


Responder

16/06/2006

Ricardo78

Bom dia, psergio.p.

Tentei desta forma como o wcrivelini havia dito também, mas não funcionou. Parece que eu tenho que detalhar mais a minha pesquisa e estudar mais as amarrações das tabelas do banco.
Se tiver outra idéia, agradeço desde já.
De qualquer maneira, muito obrigado pela ajuda. :)

Até +.


Responder

16/06/2006

Psergio.p

Caro amigo, tem alguma coisa errada, esta maneira é correta sim! Posta a mensagem de erro ou a estrutura das tabelas para eu analisar!!


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar