ouvinte do banco de dados mysql

2

Existe alguma maneira de anexar algum tipo de ouvinte a uma tabela no mysql para monitorar mudanças? Eu tentei procurar por isso, mas não encontrei nada. Eu gostaria de fazer isso para criar um ui com atualizações ao vivo.

    
por Zitrax 13.02.2010 / 02:26

4 respostas

3
show table status like 'tablename'

mostrará detalhes sobre quando a tabela foi atualizada pela última vez.

Além disso, se a tabela tiver uma chave primária de incremento (auto_increment, timestamp, etc), a interface HANDLER poderá ser útil para rastrear novas linhas inseridas na tabela - bloqueando até que novos dados cheguem.

link

Como foi mencionado em outras respostas, adicionar gatilhos à tabela é provavelmente a solução mais flexível. Seu gatilho pode atualizar uma tabela de auditoria registrando as alterações e, em seguida, seu aplicativo pode pesquisar na tabela de auditoria para refletir quaisquer alterações.

    
por 13.02.2010 / 09:22
2

Existem algumas maneiras pelas quais você pode conseguir isso, mas meu palpite é que seria melhor fazer isso no código do aplicativo do que no banco de dados.

Se você quer fazer isso no DB você tem algumas opções, o MySQL Proxy e o MySQL disparam. Não tenho certeza se os gatilhos do MySQL podem fazer nada além de executar o SQL, mas isso poderia ser suficiente, você poderia usá-los para criar uma tabela de 'atualizações' e fazer uma pesquisa regular sobre isso. Se você não quer fazer isso, você provavelmente poderia escrever um script MySQL Proxy em Lua para fazer o que você precisa, apesar de que provavelmente seria muito mais difícil.

Manual do MySQL lidando com gatilhos: link

Uma introdução ao MySQL Proxy: link

    
por 13.02.2010 / 02:40
0

Uma coluna timestamp_inserted na tabela ajudaria?

Se a nova coluna timestamp_inserted fosse padronizada como NOW (), as alterações no código podem não ser muito graves se você a adicionar. Eu acho que no MySQL você não tem que especificar colunas que possuem padrões quando você insere.

Com os acionadores que o Andrew mencionou, você pode lidar com mais eventos, como atualização ou exclusão.

    
por 13.02.2010 / 07:40
0

Se você conhece o C ++, pode usar a biblioteca do MySQL Replication Listener para fazer o Change Data Capture: link

    
por 13.01.2011 / 10:31