Ir para conteúdo

POWERED BY:

Arquivado

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

Gastly

Criar rotinas para atualização de dados no banco.

Recommended Posts

Olá, boa tarde!

 

Tenho um problema e não estou encontrando uma solução.

O problema se resume em toda vez que for 00:00:00 (meia noite/virar o dia) a minha tabela de usuários no banco de dados(MYSQL) deverá colocar valor NULL no campo de senha de todos os usuários.

 

 

O complicado é como fazer pra saber que vai dar meia noite, como fazer pra ficar verificando a hora a cada minuto pra poder executar o update.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hi.

 

Como o Andrey disse, procure conhecer o scheduler do seu DBMS se a task for apenas dentro da database.

 

Se não der certo ou você não tiver como utilizar o recurso, utilize cron jobs com um script.

Mas cuidado pra não fazer algo porco. Utilize apenas em último caso. LOL

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

Estudei sobre cron jobs. No entanto isto não poderá ser feito...

Não terei acesso ao servidor a empresa onde trabalho apenas disponibilizará os script's e software rodando para o cliente.

O cliente já tem seu próprio servidor com suas configurações. Não da pra ter acesso, isso desconsidera está operação.

 

 

Estudei um outro tanto por eventos no banco de dados, mas está dando erro de sintaxe.

 

Este é o meu evento:

 

CREATE EVENT anular_senha

ON SCHEDULE AT TIMESTAMP 'DAY 00:00:00'

DO UPDATE cad_usuarios set usuario_senha = 'NULL' WHERE usuario_tipo <> 1;

 

Alguém já criou eventos, onde está o meu erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém já criou eventos, onde está o meu erro?

Eu, faltou um BEGIN , END .. entre outras coisinhas.

Faça assim:

CREATE EVENT `anular_senhas` ON SCHEDULE EVERY 1 DAY ON COMPLETION PRESERVE ENABLE
DO
BEGIN
    UPDATE `cad_usuarios` SET usuario_senha = 'NULL' WHERE usuario_tipo <> 1;
END

 

Esse evento acima vai rodar diariamente, agora, se quiser com 12 horas a cada dia ( 2 execuções )

CREATE EVENT `anular_senhas` ON SCHEDULE EVERY 12 HOUR ON COMPLETION PRESERVE ENABLE
DO
BEGIN
    UPDATE `cad_usuarios` SET usuario_senha = 'NULL' WHERE usuario_tipo <> 1;
END

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, optei por escolher o evento de 1(um) dia.

No entanto é necessário que eu faça alguma coisa no servidor, liberar acesso ou qualquer outra coisa?

É que ainda continua dando erro de sintaxe.

 

Desde o momento gostaria de agradecer ao Andrey Knupp que tem me ajudado bastante.

 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'EVENT `anular_senhas` ON SCHEDULE EVERY 1 DAY ON COMPLETION PRESERVE ENABLE
DO
' at line 1 

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tinha acabado de ler sobre delimitadores.

Pesquisando mais na internet.

Em um fórum muito antigo encontrei uma dúvida similar a minha mas não conseguiram a conclusão e um resultado para determinada situação.

Alguém que por um acaso disse que teria que configurar algumas coisas no banco mas também não sabia o que era.

 

 

Rodei seu(Andrey) script e permaneço com o erro de sintaxe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, no 'MySQL Command Line' o código rodou perfeitamente:

mysql> delimiter $$
mysql> CREATE EVENT `anular_senhas` ON SCHEDULE EVERY 1 DAY ON COMPLETION PRESERVE ENABLE
   -> DO
   -> BEGIN
   ->      UPDATE `cad_usuarios` SET usuario_senha = 'NULL' WHERE usuario_tipo <> 1;
   -> END$$
Query OK, 0 rows affected (0.02 sec)

mysql> delimiter ;

 

Não entendo porque não funciona no 'phpMyAdmin'.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não posso te em muita coisa cara, sendo que 'aqui' correu tudo bem ao contrario de você, uma coisa que agente pode não ter percebido, é a versão do MySQL, events parece funcionar somente em versões 5.1+, qual é a versão do seu mysql ?

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.