Trigger em Mysql

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?
 
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..
 
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 :)
 
Back
Topo