Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Célido

Mysql TRIGGER

Recommended Posts

Fala Galera, Bom Dia / Noite

 

Estou tentando desenvolver um sistema de parcelas, disparado por uma trigguer.

mas esta dando varios erros. segue a trigger:

 

USE `u575681646_memb`;
DELIMITER $$
CREATE DEFINER=`root`@`localhost` TRIGGER xxx AFTER INSERT ON contaspagar
FOR EACH ROW
begin
Declare x int;
Declare Parcelas int;
set x = 0;
set Parcelas = "SELECT MAX(IdPag), Parcelas From contaspagar ORDER BY IdPag DESC LIMIT 1";
while x <=Parcelas DO
Insert into baixas1 (IdPag,Emissao,Fornecedor,Descricao,CentroCustos,VlrPag,Parcelas,ContaRec,TipoAtiv) Values (new.IdPag,new.Emissao,new.Fornecedor,new.Descricao,new.CentroCustos,new.VlrPag,new.Parcelas,new.ContaRec,new.TipoAtiv);
set x=x+1;
end while;
end
esta ocorrendo :
Failed to execute SQL. Error: Incorrect integer value: 'SELECT MAX(IdPag), Parcelas From contaspagar ORDER BY IdPag DESC LIMIT 1' for column 'Parcelas' at row 1
o Campo Parcelas é INT, bem como o IdPag é INT, auto incremendo.
Alguem teria uma idéia de como desenrolar a bagaça?
a Ideia : O Usuario Preenche o Valor e o Numero de Parcelas.
Ao INSERIR na Tabela Contas a Pagar ele Atualiza o Parcelamento e as baixas. os registros de acordo com as parcelas.
EM PHP ja fiz, atrave s de codigo. mas eu queria usar TRIGGER. pois o sistema sera desenvolvido em todas
as linguagens ASP ASP NET PHP ETC......;
o BD é MYSQL......
Valeu!!!!!!!!!!
Célido

Compartilhar este post


Link para o post
Compartilhar em outros sites

Substitua o "" por (): [inline]"SELECT MAX(IdPag), Parcelas From contaspagar ORDER BY IdPag DESC LIMIT 1";[/inline] para [inline](SELECT MAX(IdPag), Parcelas From contaspagar ORDER BY IdPag DESC LIMIT 1);[/inline]

 

Como esta query roda no db, ela entende que o valor passado para a variável Parcelas é uma String.

 

Não tenho certeza, mas acho que MAX() funciona somente junto com GROUP BY, não me lembro ao certo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela atençao.

 

Fora da TRIGGER funciona:

SELECT Parcelas From contaspagar ORDER BY IdPag DESC LIMIT 1;

Mas ao Processar a TRIGGER ele nao pega o Campo, e nao Efetua o TRIGGUER.

 

Quaisquer sugestoes serão bem vindas.

Agradeço.

 

Célido

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera. Apos Comentarios de Todos e um pouco de logica. cheguei a resoluçao.

 

USE `u575681646_memb`;
DELIMITER $$
CREATE DEFINER=`root`@`localhost` TRIGGER xxx AFTER INSERT ON contaspagar
FOR EACH ROW
begin
Declare x int;
set x = 1;
set @PRC = (SELECT Parcelas From u575681646_memb.contaspagar ORDER BY IdPag DESC LIMIT 1);
while x <=@PRC DO
Insert into baixas1 (IdPag,Emissao,Fornecedor,Descricao,CentroCustos,VlrPag,Parcelas,ContaRec,TipoAtiv)
Values
(new.IdPag,new.Emissao,new.Fornecedor,new.Descricao,new.CentroCustos,new.VlrPag,new.Parcelas,new.ContaRec,new.TipoAtiv);
set x=x+1;
end while;
end
Ate mais. Obrigado
Célido

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.