GARANTIR DESCONTO

Fórum Como capturar a select que foi executada em uma trigger? Firebird 2.1 #419152

30/06/2012

0

Bom dia família da DevMedia.
Executando alguns UPDATES e DELETES do tipo:
UPDATE ALUNOS SET ANO = 2, TURMA = B WHERE ID_ALUNO IN (1,2,3)

Ele não executa simplesmente isso... ele roda registro por registro mais ou menos assim:
UPDATE ALUNO ID_ALUNO = 1, SET ANO = 2, TURMA = B WHERE ID_ALUNO = 1 AND ANO = 2 AND TURMA = B

e vai executando o update... Existe alguma forma de capturar apenas a select executada? (NO CASO UPDATE ALUNOS SET ANO = 2, TURMA = B WHERE ID_ALUNO IN (1,2,3)

Pois se eu der um DELETE FROM ALUNOS.. ele vai rodar um por um... não e viável... se alguém puder me ajudar, agradeço muito!!

um grande abraço
Lucas Oliveira

Lucas Oliveira

Responder

Posts

30/06/2012

William

Colega pelo o que eu entendi vc que disparar um DELETE mas com uma condição WHERE?

Se for isso é só copiar a condição do UPDATE:
DELETE FROM ALUNOS WHERE ID_ALUNO IN (1,2,3)
Responder

Gostei + 0

30/06/2012

Lucas Oliveira

sim, é isso mesmo wllfl. Mas onde na trigger ele guarda a select que eu rodei nesses before_post/delete/update?
Responder

Gostei + 0

30/06/2012

William

Lucas qual a finalidade dessa trigger, pois vc usa termo o SELECT mas não vejo onde vc está criando um Select mas sim UPDATE E DELETE.

Essa trigger é para UPDATES OU DELETES?

Lembrando que a trigger é só um gatilho para disparar determinado código de acordo com um evento que ocorra na tabela.
Responder

Gostei + 0

02/07/2012

Lucas Oliveira

Ela é de update, delete e insert.
Eu estou desenvolvendo um programa de espelhamento para o firebird 2.1 já que ele não tem suporte nativo a esse recurso.
Então basicamente eu faço o que? Eu tenho uma tabela com um campo onde através das trigers eu vou inserindo o que ele está fazendo(update, delete, insert), e depois através de um programa no Delphi eu verifico essa tabela. e executo a select que foi gravada no campo em outro banco de dados para fazer o espelhamento.

O problema é que se eu tiver por exemplo um registro com 5 alunos. e executar um DELETE FROM ALUNOS ele não vai salvar o DELELE FROM ALUNOS e sim vai percorrer aluno por aluno e salvar um:
DELETE FROM ALUNOS WHERE ID = 1 AND NOME = ALUNO1,
DELETE FROM ALUNOS WHERE ID = 2 AND NOME = ALUNO2
DELETE FROM ALUNOS WHERE ID = 3 AND NOME = ALUNO3
DELETE FROM ALUNOS WHERE ID = 4 AND NOME = ALUNO4
DELETE FROM ALUNOS WHERE ID = 5 AND NOME = ALUNO5

E isso seria inviável... Mas não sei como resolver esse problema...
Responder

Gostei + 0

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

Aceitar