trigger de update  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
erasmo_tec
JavaChild
[Avatar]

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?
[Email] [MSN] [ICQ]
Mikhas
Virtual Machine Man
[Avatar]

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




[Email] [MSN]
erasmo_tec
JavaChild
[Avatar]

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

[Email] [MSN] [ICQ]
Mikhas
Virtual Machine Man
[Avatar]

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




[Email] [MSN]
erasmo_tec
JavaChild
[Avatar]

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?
[Email] [MSN] [ICQ]
Yky Mattshawn
Virtual Machine Man
[Avatar]
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
[Email] [MSN] [ICQ]
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team