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

Sådan opretter du triggere for at tilføje ændringshændelser til revisionslogtabeller

Jeg kan give dig en slags algoritme at arbejde efter, det meste af grundarbejdet er allerede udført:

Dette kan være din revisionstabel, bør tilføje tidsstempelkolonnen som ændret dato eller flere oplysninger i henhold til dine krav:

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

Dette kan bruges som en referenceudløser; Bemærk, at der vil være en separat trigger for hver tabel:

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

Du kan have flere indsæt sætninger en for hver kolonne. Hvis du vil sætte en begrænsning for ikke at indsætte data, der ikke er ændret, kan du foretage følgende ændring i triggeren:

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

Giv besked, hvis der er behov for flere oplysninger.



  1. Omarranger TreeView-noder ved at trække og slippe

  2. Oracle 'Partition By' og 'Row_Number' nøgleord

  3. Sådan returneres alle deaktiverede udenlandske nøglebegrænsninger i SQL Server (T-SQL-eksempel)

  4. Postgres UUID JDBC virker ikke