2010-12-09 6 views
1

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

4

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.

0

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 ....

0

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.

0

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.
Verwandte Themen