Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Monitore as inserções do MySQL de diferentes aplicativos


Eu acho que você poderia conseguir algo assim com bastante facilidade, supondo que você não se importasse em criar algumas tabelas e gatilhos extras em seu banco de dados, e que o aplicativo java de monitoramento teria que pesquisar o banco de dados em vez de receber especificamente gatilhos.

Supondo que a tabela que você deseja monitorar seja algo assim:
CREATE TABLE ToMonitor ( id INTEGER PRIMARY KEY, value TEXT );

Em seguida, você cria uma tabela para rastrear as alterações e um gatilho que preenche essa tabela:
CREATE TABLE InsertedRecords( value TEXT );
CREATE TRIGGER trig AFTER INSERT ON account
FOR EACH ROW INSERT INTO InsertedRecords( value ) VALUES ( NEW.value );

Isso fará com que a tabela InsertedRecords seja preenchida com cada inserção que acontece no ToMonitor.

Então você só precisa configurar seu aplicativo de monitoramento para periodicamente SELECT * from InsertedRecords , execute a ação apropriada e limpe os registros de InsertedRecords

EDIT:Uma pequena alternativa, se você não se importasse com um pouco de codificação C/C++, seria siga as instruções aqui para criar uma função SQL personalizada que acionou seu aplicativo de monitoramento em ação e, em seguida, basta chamar essa função SQL de dentro do acionador que você criou.