Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So erstellen Sie Trigger, um die Änderungsereignisse in Audit-Protokolltabellen hinzuzufügen

Ich kann Ihnen eine Art Algorithmus zur Verfügung stellen, an dem Sie arbeiten können, das meiste der Grundarbeit ist bereits erledigt:

Dies kann Ihre Audit-Tabelle sein, sollte eine Zeitstempelspalte als Änderungsdatum oder weitere Informationen gemäß Ihren Anforderungen hinzufügen:

CREATE TABLE audit (
     old_data VARCHAR(100),
     new_data VARCHAR(100),
     tbl_name VARCHAR(100)
)
|

Dies kann als Referenztrigger verwendet werden; Beachten Sie, dass es für jede Tabelle einen separaten Trigger gibt:

CREATE TRIGGER testtrigger BEFORE UPDATE ON <table_name>
  FOR EACH ROW BEGIN
    INSERT INTO audit(old_data, new_data, tbl_name) VALUES (OLD.first_name, NEW.first_name, "testtable");
  END;
|

Sie können mehrere Insert-Anweisungen haben, eine für jede Spalte. Wenn Sie einschränken möchten, dass die nicht geänderten Daten nicht eingefügt werden, können Sie die folgende Änderung im Trigger vornehmen:

IF(OLD.column_name <> NEW.column_name) THEN
    --Your insert query here
ELSE
    --NOOP
END IF;

Lassen Sie es wissen, falls weitere Informationen benötigt werden.