2010-04-21 3 views
9

Ist es möglich, eine mysql-Tabelle auf Änderungen innerhalb einer C# -Anwendung zu überwachen? Ich möchte grundsätzlich ein Ereignis ausgelöst werden, wenn Daten in die Tabelle eingefügt werden. Das einzige, woran ich jetzt denken kann, ist, die Tabelle alle 100ms oder so abzufragen.MySQL-Tabelle für Änderungen in einem C# -Programm überwachen?

Antwort

3

Wenn sich sowohl die Anwendung als auch der Datenbankserver auf demselben Computer befinden, können Sie möglicherweise einen Trigger in MySQL einrichten, der in eine Protokolldatei AFTER INSERT, UPDATE schreibt und dann FileSystemWatcher erstellt, um diese Protokolldatei anzuzeigen. FileSystemWatcher wird fire events when the file is changed, auf die Ihre Anwendung reagieren kann.

Der Auslöser könnte wie folgt aussehen:

create trigger MyTable_Monitor 
after insert, update on MyTable 
for each row 
begin 
select * from new into outfile "path/to/table.log" 
end 

Ein Problem, das ich mit dem obigen Code zu sehen ist, dass die Ausgabedatei nicht angehängt werden kann (am besten ich sagen kann), so könnten Sie Probleme haben, wenn es mehrere sind Abfragen, die in einem Aufruf ausgeführt werden (oder sogar mehrere Abfragen, die gleichzeitig von verschiedenen Clients ausgeführt werden). Irgendwelche Verbesserungsvorschläge sind willkommen.

+1

Danke. Leider läuft die C# App möglicherweise nicht auf demselben Computer oder hat Zugriff auf das Protokollverzeichnis, um einen FileSystemWatcher zu verwenden – Brian

0

hinzufügen Vielleicht Insert, Update, Delete-Trigger an die Tabellenzeile in einer neuen Tabelle mit zwei Spalten anmelden ..

  1. uid der Reihe
  2. Art der Änderung insert/update/delete
  3. geändert

Dann greifen Sie auf diese Tabelle zu und es teilt Ihnen mit, welche Zeilen eingefügt, aktualisiert und gelöscht wurden.

Verwandte Themen