Ir para conteúdo

POWERED BY:

Arquivado

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

psydack

Trigger que verifica duas colunas de tempos em tempos

Recommended Posts

Olá, sou novo aqui no fórum mas já acompanho faz um tempo o trabalho da galera.

Sempre gostei das respostas, curtas e diretas. =)

 

Bom ai vai um questão, pode parecer simples mas faz uma semana que procuro e não acho a solução.

Não vou entrar com dados técnicos aqui porque é indeferente seu uso.

 

Bom vamos lá, precisava de uma "FUNCAO" no MYSQL que verificasse de tempos em tempos (por exemplo: a cada 10 segundos, uma hora, etc) duas colunas de uma tabela.

 

Ex: Imaginando que agora são 1h da madrugada e nosso relógio do bd use padrão 24h.

 

---------------TABLE : GOL--------------------------

----------------------------------------------------

IDGOL---HORA_COMECA------HORA_ACABA---------STATUS

1-------------00:00:00---------------00:10:00-----------FINALIZADO

2-------------01:00:00---------------02:00:00-----------ABERTO

3-------------02:00:00---------------12:00:00-----------AGUARDANDO ABERTURA

---------------------------------------------------------------

 

 

Como podem ver o id 1 está FINALIZADO já são 1h da manhã. O id 2 está rolando normal porque começou 1h e ainda falta 1h pra acabar. O id 3 está esperando chegar as 2h da manhã para mudar o STATUS para ABERTO E FINALIZAR O ID 3.

 

Mas como seria possivel fazer um script rodar direto no servidor para fazer estas verificações?

 

Tenso.

 

Ficaria muito grato à todos que pararem para pensar comigo. =)

 

abraços;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito bem seu objetivo, alias, entendi, mas não vi a prática.

 

Você tem a hora do servidor que pode ser comparada com a hora que esta armazenada na tabela, desta forma, se esta hora for menor que a data de inicio, seu status é AGUARDANDO, se estiver entre o inicio e o término, o status é ABERTO, e se for maior que o término, o status é FECHADO.

 

De fato o MySQL gratuito por si só não possui recurso para agendamento de tarefas, para obter o comportamento que você deseja seria necessário um recursos externo ao MySQL, como o crontab do Linux.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uhm, o objetivo é simples. Imagina um sistema de compras que eu tenho várias ofertas só qeu cada uma com data de inicio e data de término.

Só que eu não imaginei a técnica usada.

 

Não sei se seria possível em um sistema gerenciado por terceiro, como uolhost por exemplo.

 

Vou procurar sobre este "crontab". Mas acredito que o servidor seja windows. =)

 

Obrigado pela resposta. =) Vou pesquisar mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A coluna STATUS não precisa ser real, pode ser calculada com base na data/hora inicial , data/hora inicial e a data do sistema.

 

+ou-

 

select  .... ,
(case when [data do sistema] < [data/hora inicial] then 'AGUARDANDO ABERTURA'
      when [data do sistema] between [data/hora inicial] and [data/hora final] then 'ABERTO'
      when [data do sistema] > [data/hora final] then 'FINALIZADO'
      else 'ERRO' END)  
from ....

Compartilhar este post


Link para o post
Compartilhar em outros sites

A coluna STATUS não precisa ser real, pode ser calculada com base na data/hora inicial , data/hora inicial e a data do sistema.

 

+ou-

 

select  .... ,
(case when [data do sistema] < [data/hora inicial] then 'AGUARDANDO ABERTURA'
      when [data do sistema] between [data/hora inicial] and [data/hora final] then 'ABERTO'
      when [data do sistema] > [data/hora final] then 'FINALIZADO'
      else 'ERRO' END)  
from ....

 

Sim essa é a idéia, mas vai rodar onde? Trigger? SP? O problema em questão é: como vou rodar uma "TRIGGER" a cada 10 segundos?

 

Mas valeu pela proposta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Triggers são objetos que tem seu código disparado qiando ocorre alguma operação na tabela, insert por exemplo, não se aplica neste caso.

 

Não precisa atualizar a coluna, pela query se sabe o status.

 

O que você precisar é dar um refresh na query de tempos em tempos, isto depende de como a aplicação foi feita, creio se r este o problema finalmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Triggers são objetos que tem seu código disparado qiando ocorre alguma operação na tabela, insert por exemplo, não se aplica neste caso.

 

Não precisa atualizar a coluna, pela query se sabe o status.

 

O que você precisar é dar um refresh na query de tempos em tempos, isto depende de como a aplicação foi feita, creio se r este o problema finalmente.

 

Exatamente motta. A aplicação é em web =). Estou ferrado, né?!

Qualquer solução é bem vinda em qualquer linguagem.

 

Acha que devo mover o tópico ou está no lugar certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que estamos querendo dizer, desde o primeiro POST é que não se faz necessário o uso de qualquer um desses recursos para obter o compotamento desejado.

 

Independente de refresh da página, um simples comando SELECT, como no exemplo do Motta, pode solucionar seu problema.

 

Se quiser detalhar melhor o cenário...

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.