Trigger em MySQL

6 respostas
Ivan_Alves

Preciso criar uma Trigger que é chamada ao se fazer um update ou um insert em uma tabela onde consiste de realizar uma operação matemática para realizar um calculo e atualizar a outra tabela com esse calculo. O problema é que o material que encontrei até é muito escasso e outros nem funcionam, não se é a versão ou algo do tipo.
Envim de alguma coisa para começar, uso o MySQL versão 5.1 e use o HeidiSQL 6 para conecta-lo, no código java até que é beleza só que eu quero fazer pelas trigger por ser mais rápido e também se houver uma alteração direta eu possa chamar esse eventos.

Agradeço por qualquer ajuda!

6 Respostas

drsmachado

Usando o que li aqui http://www.htmlstaff.org/ver.php?id=4038
Fiz

CREATE TRIGGER teste_trigger AFTER INSERT ON tipo
 for each row
 Begin
 insert into tt values (1, 'teste');
 end;
 $$

Então executei

insert into tipo (nome, prazo, valor) values ('nome', 5, 3.5);

E verifiquei

insert into tipo (nome, prazo, valor) values ('nome', 5, 3.5);
//resultado
+------+-------+
| id   | test  |
+------+-------+
|    1 | teste |
+------+-------+

Pode não ser atual, mas não mudou.

Ivan_Alves

Ta preciso de algo mais ou menos assim em MySQL

List <pessoas> lista = executarSQL("SELECT * FROM teste2"); //busca no banco e retorna a List de objetos

for(int x=0;x<lista.size();x++){
    //faço os calculos necessário aqui e tudo mais por exemplo
    if(lista.get(x).getSaldo() > 10){
        lista.get(x).setPontos(12);
    }else if(lista.get(x).getSaldo() > 5){
        lista.get(x).setPontos(7);
    }else if(lista.get(x).getSaldo() > 0){
        lista.get(x).setPontos(2);
    }else{
        lista.get(x).setPontos(0);
    }

    executarUpdate(lista.get(x)); //aqui eu executo o update da tabela
    
}

só que preciso disso no SQL alguém aí tem alguma ideia de como fazer ou onde tem um bom material?

drsmachado

StoredProcedure, camarada.
Provavelmente você vai precisar de algum CURSOR também.

Tem muito material no google, chegou a pesquisar algo?

Ivan_Alves

Usarei as StoredProcedure dentro da minha Trigger? preciso de exemplos pláticos!

drsmachado

Então pesquise no google, se trouxer algum exemplo que não entendeu, teremos satisfação em respondê-lo.
Comentei sobre stored procedure pois você disse precisar realizar verificações e cálculos, portanto, uma trigger não suportaria.

Pelo comentário que destaquei, me parece que o senhor não faz idéia do que seja uma trigger ou uma stored procedure.
Sinto muito por isto, mas, sem entender o conceito, você pode até fazer, mas não irá te acrescentar nada.

Ivan_Alves

Tá consigui chamar uma StoredProcedure através da minha trigger porém a dúvida maior por enquanto é, quero percorrer um listagem de resultados buscados no banco através de um loop, sendo que cada dado eu irei realizar uma ação diferente parecido com o código abaixo;

for(Object item: SELECT * FROM teste2){ /* * aqui faço mais coisas */ }

tem jeito de fazer?
Pelo menos com variaveis númericas(exemplo ‘if 2 < 6 then’) eu vi que tem jeito só que se possivel não queria executar um select para cada fez que passasse pelo loop alguém tem alguma idéia que possa compartilhar?

Criado 28 de junho de 2011
Ultima resposta 1 de jul. de 2011
Respostas 6
Participantes 2