Ola pessoal preciso de ajuda neste codigo. tenciono inserir o valor que esta na tabela emolimentos para a matricula, fiz a comparação do idcurso que esta na tabela matricula e compara-lo com o idcurso que esta na tabela emolimentos. tentei salvar e vem ester erro: Erro ao salvar result consisted of more than one row trigger
DELIMITER $$
CREATE TRIGGER mensalidadeAluno_AI AFTER INSERT ON matricula
FOR EACH ROW
BEGIN
DECLARE mes INT DEFAULT 0;
DECLARE idmatricula INT;
DECLARE idanoLectivo INT;
DECLARE valor2 DECIMAL;
SET idmatricula := LAST_INSERT_ID()+1;
SELECT idcurso INTO @cl FROM matricula WHERE idmatricula=idmatricula;
SELECT valor INTO @vl FROM emolimentos em WHERE em.idcurso=@cl;
SET valor2 := @vl;
REPEAT
SET mes := mes+1;
INSERT INTO mensalidades (meses, idmatricula, idcurso, anolectivo, valor, pago, divida)
VALUES(mes, idmatricula, @cl, idanoLectivo, valor2,valor2,valor2);
until mes=12
END REPEAT;
END;$$
DELIMITER ;
O erro, creio eu, está aqui:
SELECT idcurso INTO @cl FROM matricula WHERE idmatricula = idmatricula;
Porque um id será sempre igual a ele mesmo. Isto é, a igualdade é verdadeira para todas as linhas da tabela. Por exemplo:
1 = 1;
2 = 2;
k = k;
n = n.
Já que o gatilho é uma inserção, porque não usa a variável NEW
?
onde iria neste caso o NEW? porque até tentei fazer de outra forma, ele busca o curso da tabela matricula e compara com o valor da tabela emolumentos e faz a insersão na tabela mensalidades. O problema com este método ele faz um atraso primeiro repete o mesmo dado ou o valor do curso 1 e só de pois é que ele insere um outro valor que acabei de inserir tem como ajudar ?
Quando você usa uma trigger disparada por insert, você consegue pegar alguns dados da tabela disparadora e usar na tabela em as operações irão ocorrer. O MySQL cria a variável NEW que permite recuperar esses valores. Para mais detalhes, creio que seja uma boa ideia ver os vídeos da Bóson Treinamentos sobre o assunto e que estão disponíveis gratuitamente no YouTube. São 4 vídeos só sobre triggers. O link para o primeiro é: MySQL - Triggers - Definição, Sintaxe e Criação - 44.