1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Trigger em Mysql

Discussão em 'Programação' iniciada por mpLopes, 27 de Maio de 2007. (Respostas: 4; Visualizações: 2556)

  1. mpLopes

    mpLopes Power Member

    Boas..

    Estou a tentar criar um trigger que, ao inserir os dados numa tabela (um cliente de um parque de estacionamento), o trigger calculasse o valor a pagar e inserisse esse valor.

    Problema: o valor a pagar pertence à mesma tabela, e à mesma linha que se está a inserir.
    Tanto quanto já ouvi dizer, acho que isto não é possível no Mysql. Mas também já ouvi dizer o contrário.

    Alguem me consegue dar a certeza de uma ou de outra hipótese?
     
  2. dark_splinter

    dark_splinter Power Member

    Não tou a perceber muito bem, mas .... não podes fazer duas consulta nesse caso??

    uma de cada vez...
     
  3. mpLopes

    mpLopes Power Member

    Quero inserir um cliente na tabela clientes. e o trigger, pega nos dados desse cliente e calcula um valor (em dinheiro) que esse cliente pagou e actualiza os dados para esse cliente.
     
  4. hYpe

    hYpe [email protected] Member

    Não sei se em MySQL é diferente, mas o ano passado em SQL dei de caras c um problema do género.

    A mensagem de erro era qualquer coisa do género de 'cannot reach -something- tables are mutating'. Ou seja, como a tabela estava a ser alterada, não podia aceder a ela, estava locked.

    Isto porque o trigger estava feito para disparar linha a linha.. Bastou passá-lo para que disparasse depois de todas as alterações fossem feitas, e ficou a bombar..

    Não sei se disse alguma barbaridade, mas se disse alguem q corrija..
     
  5. Myth

    Myth Power Member

    Julgo que o que procuras é algo do genero:

    CREATE TRIGGER trig_calc BEFORE INSERT ON tabelaEstaciona FOR EACH ROW SET NEW.valorPagar = NEW.var * NEW.var2;

    Tens de ter em atenção a versão do mysql que estás a usar, pq triggers, se na estou em erro, só são suportados por versões superiores ou iguais a 5.0.2.
    Também tem de ser BEFORE INSERT, caso contrário dá erro (AFTER INSERT).

    Espero ter ajudado :)
     

Partilhar esta Página