Mysql
 sql >> Database >  >> RDS >> Mysql

Monitora gli inserti MySQL da diverse applicazioni

Penso che potresti ottenere qualcosa del genere abbastanza facilmente, supponendo che non ti dispiacesse creare alcune tabelle e trigger aggiuntivi sul tuo database e che l'applicazione Java di monitoraggio dovrebbe eseguire il polling del database piuttosto che ricevere specificamente i trigger.

Supponendo che la tabella che desideri monitorare sia qualcosa del genere:

CREATE TABLE ToMonitor ( id INTEGER PRIMARY KEY, value TEXT );

Quindi crei una tabella per tenere traccia delle modifiche e un trigger che popola quella tabella:

CREATE TABLE InsertedRecords( value TEXT );
CREATE TRIGGER trig AFTER INSERT ON account
FOR EACH ROW INSERT INTO InsertedRecords( value ) VALUES ( NEW.value );

Ciò farà sì che la tabella InsertedRecords venga popolata con ogni inserto che si verifica in ToMonitor.

Quindi devi solo configurare la tua app di monitoraggio per SELECT * from InsertedRecords periodicamente , esegui l'azione appropriata e quindi cancella i record da InsertedRecords

EDIT:una leggera alternativa, se non ti dispiace un po' di codifica C/C++, sarebbe segui le istruzioni qui per creare una funzione SQL personalizzata che abbia attivato la tua applicazione di monitoraggio in azione, quindi richiama semplicemente quella funzione SQL dall'interno del trigger che avevi creato.