In meiner Datenbank möchte ich den Wert einer Spalte verfolgen, wenn sie geändert wird. Auf eine Weise, dass jeder Wert eines Feldes ändern können wir wissen, was der vorherige Wert war. Es wäre fantastisch Zu jeder Änderung Zeitstempel zuweisen. Ich verwende MySQL als Datenbankserver.Ändern der Datenerfassung in MySQL
Antwort
Um dies zu tun, müssen Sie einen Trigger erstellen, der ein Ereignis ausgelöst wird, wenn ein INSERT, UPDATE, DELETE
für eine bestimmte Tabelle auftritt.
Sehen Sie sich die Dokumentation für CREATE TRIGGER an.
Für das, was Sie tun möchten, müssen Sie wahrscheinlich eine Hilfstabelle haben, die eine Zeile für jede INSERT/UPDATE
auf der Haupttabelle eingefügt hat, AFTER
es ist nun mal die ID der Zeile geändert enthält, wird der alte Wert den neuen Wert und ein Zeitstempel.
Hier ist, was ich vorschlagen würde. Es mag ein kleines bisschen Arbeit sein, aber wenn Sie es tun, denke ich wirklich, dass Sie eine solide Möglichkeit haben, die Datenerfassung in MySQL zu ändern. Denken Sie daran, dass das Verfolgen von Änderungen in einer Datenbank tatsächlich eine wirklich schwierige Aufgabe ist, wenn Sie Probleme wie Sperren und Isolationsstufen berücksichtigen. Ich empfehle einen Prozess wie diesen.
Werfen Sie einen Blick auf ein Produkt namens MobiLink von iAnywhere. Sie können eine kostenlose Entwicklerversion davon von here herunterladen. Der Zweck von MobiLink besteht darin, dass Sie Datenänderungen von Datenbanken wie MySQL mit einer SQL Anywhere-Datenbank synchronisieren können. Der einzige Teil, an dem Sie interessiert sind, ist natürlich die Möglichkeit, Änderungen von MySQL zu erhalten. Glücklicherweise wird MobiLink diese Change Data Capture-Trigger sehr effektiv in Ihrer MySQL-Datenbank erstellen. In der Tat wird es sogar die SQL-Skripte geben, die es für den Fall verwendet, dass Sie es jemals wieder tun müssen. Danach können Sie SQL Anywhere deinstallieren.
Um zu beginnen, nachdem Sie es installiert haben, wird es ein Produkt namens Sybase Central geben, das Sie öffnen müssen. Wenn dies geöffnet wird, wird ein Assistent zur Verfügung stehen, der Sie durch die Konfiguration von MobiLink mit Ihrer MySQL-Datenbank führt. Ich denke, es gibt eine Walkthrough in der Hilfe, die installiert wird, wenn Sie stecken bleiben, aber ich habe jetzt keinen Zugriff darauf, um zu überprüfen.
Nachdem Sie den Assistenten durchlaufen haben, hat er Ihre MySQL-Datenbank für die Änderungsdatenerfassung konfiguriert. Wenn Sie Ihre Datenbank betrachten, haben Sie auch alle Auslöser und Änderungsnachverfolgungsspalten, die Sie überhaupt benötigen würden.
Hoffnung, das hilft ....
Trigger sind nicht immer die beste Art und Weise Änderungsereignisse in der Datenbank zu erfassen. Da Trigger nach dem Ändern des Schemas der Tabelle ungültig werden können, würde dies wiederum dazu führen, dass der eigentliche Tabellenvorgang fehlschlägt.
Für mysql müssen Sie die Änderungsereignisse aus der Binärprotokolldatei erfassen. Mysql bietet API zum Lesen des Binärlogs (nach Version 5.6).
Sie können auch in Flexviews suchen, die Oracle wie Protokolle Materialisierte Ansicht zur Verfügung stellt, um die Änderungsereignisse aufzuzeichnen.
Ich erstellte ein Tool mit dem Namen cdc_audit, das die Erstellung von Audit-Tabellen in MySQL für alle oder alle Tabellen automatisiert und sogar vorhandene Trigger beibehält. Ich habe es mit Änderungsdatenerfassung (für Data Warehouse ETL-Anwendungen) im Hinterkopf geschrieben. Vielleicht finden Sie oder jemand es nützlich.
Ich auch blogged about it.
Eigenschaften
- automatisiert Erzeugung von Audit-Tabellen
- Erzeugung von Triggern automatisiert Dateien Audit-Tabellen aufzufüllen
- automatisiert die Synchronisierung von neuen Zeilen in Audit-Tabellen in CSV.
- Liest mysql information_schema, um Tabellen und Spalten automatisch zu bestimmen.
- Kann Tabellen + Trigger für alle Datenbanktabellen oder eine angegebene Liste generieren.
- Kann Audit-Tabellen für alle Datenbanktabellen oder eine angegebene Liste synchronisieren.
- Behält bei der Generierung von AFTER-Triggern eine eventuell vorhandene Triggerlogik bei.
- Sync-Skript-Option, um alle bis auf die letzte Prüfzeile zu löschen, damit die Quellen-DB klein bleibt.
- 1. Emotiv Epoc Datenerfassung
- 2. Datenerfassung von mehreren Workstations
- 3. SQL Server 2008 Datenerfassung ändern, wer hat die Änderung vorgenommen?
- 4. Wie Datenerfassung mit PDO?
- 5. Ändern der Datenerfassung oder Änderungsverfolgung - wie bei der traditionellen Audit Trail-Tabelle?
- 6. Wie beschleunigt der HAWQ-Design-Cache die Geschwindigkeit der Datenerfassung?
- 7. Ändern der Tabellen-Engine in MySQL
- 8. mysql Werte in der Tabelle ändern?
- 9. Ändern der Standard-My.CNF-Pfad in Mysql
- 10. Ändern der Daten einer Zelle in mysql
- 11. Reihenfolge der Felder in Mysql ändern
- 12. MYSQL - Ändern Reihenfolge der Datensatz
- 13. Ändern der Position der MySQL-Datenbank
- 14. Oracle Change-Datenerfassung mit Kafka Best Practices
- 15. Ändern der MySQL-Tabelle mit BASH-Array
- 16. nicht in der Lage, Routine in MySQL zu ändern
- 17. Ist der Leistungsverlust bei der Datenerfassung auf CDC-aktivierte Tabellen beschränkt?
- 18. Mysql Spalte ändern Details
- 19. SQL Server 2008 Änderung Datenerfassung vs Trigger in Audit Trail
- 20. ändern Autoindex-Nummer Mysql
- 21. MySQL-Indexanzahl ändern
- 22. Ändern MySQL WHERE params
- 23. Mysql Abfrage ändern
- 24. MySQL jetzt() Zeitzone ändern
- 25. MySql Datumsformat ändern
- 26. ändern standand MySQL-Abfrage ‚vorbereitet‘ MySQL-Abfrage
- 27. Ändern der LAST_INSERT_ID() aus einem TRIGGER in MySQL
- 28. Ändern der aktuellen Anzahl eines Auto Increment-Werts in MySQL?
- 29. MySQL: Ändern Spalte basierend auf Spaltenwerte in der gleichen Tabelle
- 30. mysql alle Werte in einer Spalte ändern