sql >> Database >  >> RDS >> Mysql

Hoe triggers te maken om de wijzigingsgebeurtenissen toe te voegen aan auditlogboektabellen

Ik kan je een soort algoritme geven om aan te werken, het meeste grondwerk is al gedaan:

Dit kan uw controletabel zijn, moet een tijdstempelkolom toevoegen als gewijzigde datum of meer informatie volgens uw vereisten:

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

Dit kan als referentietrigger worden gebruikt; merk op dat er voor elke tafel een aparte trigger zal zijn:

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

U kunt meerdere insert-statements hebben voor elke kolom. Als u een beperking wilt instellen voor het niet invoeren van de gegevens die niet zijn gewijzigd, kunt u de volgende wijziging in de trigger aanbrengen:

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

Laat weten of er meer informatie nodig is.



  1. SELECT / GROUP BY - tijdssegmenten (10 seconden, 30 seconden, enz.)

  2. Geef array door aan MySQL-opgeslagen routine

  3. Kan ik een trigger starten op de select-instructie in mysql?

  4. Java-bestand uploaden naar MySQL