Fórum Como capturar a select que foi executada em uma trigger? Firebird 2.1 #419152
30/06/2012
0
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
Curtir tópico
+ 0Posts
30/06/2012
William
Se for isso é só copiar a condição do UPDATE:
DELETE FROM ALUNOS WHERE ID_ALUNO IN (1,2,3)
Gostei + 0
30/06/2012
Lucas Oliveira
Gostei + 0
30/06/2012
William
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.
Gostei + 0
02/07/2012
Lucas Oliveira
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...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)