| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2010 14:29:23
|
erasmo_tec
JavaChild
![[Avatar]](/images/avatar/98826328c3a60215e53b342560084571.jpg)
Membro desde: 25/07/2008 15:08:21
Mensagens: 105
Offline
|
Ai Galera boa tarde
estou desenvolvendo uma aplicação que manipula muitas datas e para uma determinada situação nao consegui resolver isso na aplicação e tive que partir para uma trigger no mysql.
meu problema era calcular a diferença de uma data para outra e então joquei essa responsabilidade para o banco segue a minha trigger:
por exemplo: para calcular dt1-dt2 me retornando a quantidade em dias.
o problema é o erro lancado quando insiro um dado na minha tabela base
esse erro acredito ser devido a inserir o dado na tabela e sequencialmente atualiza-lo.
alguem tem alguma ideia de como posso fazer essa operação?
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2010 14:36:13
|
Mikhas
Virtual Machine Man
![[Avatar]](/images/avatar/4388a23da67b154b780b78dd7ea4636e.jpg)
Membro desde: 17/06/2008 11:10:50
Mensagens: 677
Localização: São Paulo
Offline
|
Você pode tentar fazer o seguinte:
na linha 8, não sei bem se deve ser um Set ou um Select
|
Refractor 1.6 - Easy reflection framework
Agora muito mais rapido!
Raze - The fastest CSS selector engine
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2010 14:46:55
|
erasmo_tec
JavaChild
![[Avatar]](/images/avatar/98826328c3a60215e53b342560084571.jpg)
Membro desde: 25/07/2008 15:08:21
Mensagens: 105
Offline
|
Fala mikhas blz.
dessa forma o erro que dá é na criação da trigger
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2010 14:57:38
|
Mikhas
Virtual Machine Man
![[Avatar]](/images/avatar/4388a23da67b154b780b78dd7ea4636e.jpg)
Membro desde: 17/06/2008 11:10:50
Mensagens: 677
Localização: São Paulo
Offline
|
Ah sim... poe "before insert" no lugar de "after insert"
|
Refractor 1.6 - Easy reflection framework
Agora muito mais rapido!
Raze - The fastest CSS selector engine
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2010 16:00:21
|
erasmo_tec
JavaChild
![[Avatar]](/images/avatar/98826328c3a60215e53b342560084571.jpg)
Membro desde: 25/07/2008 15:08:21
Mensagens: 105
Offline
|
valeu pelas dicas e acrescentei novas verificações tambem.
não ficou muito elegante mais faz o que tem que ser feito
o que acha?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2010 10:15:32
|
Yky Mattshawn
Virtual Machine Man
Membro desde: 18/12/2006 03:34:14
Mensagens: 651
Localização: São Sebastião do Caí / RS
Offline
|
Pois é, como o amigo lá em cima mostrou, utilize o SET e altere o registro recém adicionado. Da maneira que tu fizeste antes, toda vez que a trigger executasse, ela percorreria TODOS os registros comparando as datas, quando na verdade tu só precisarias verificar o registro novo.
Ah, o erro ocorreu porque tu criaste uma trigger que executava um comando que ativava a própria trigger, isso criar um loop infinito, então o MySQL trava a criação da mesma.
Uma coisa que eu te recomendaria era tirar aquele número "61" de dentro da trigger, pois, isso deixa as coisas muito fixas. O ideal é tu teres uma tabela, exemplo "configuracoes_gerais" onde podes criar um campo que contenha esse valor e que possa ser alterado pelo usuário. Aí dentro da trigger tu "buscas" o valor do campo ao invés de colocar o número diretamente. FIca bem mais flexível.
Abaixo apenas diminui umas linhas desnecessárias do código:
This message was edited 1 time. Last update was at 24/03/2010 10:16:59
|
Yky Mattshawn [ Compusoft - Desenvolvimento de Sistemas Empresariais ]
"Tudo que é ortodoxo ou heterodoxo demais gera heresia."
Bixo 2010 - Ciência da Computação - Feevale/RS e Unisinos/RS |
|
|
 |
|
|