sql >> Databasteknik >  >> RDS >> Mysql

Hur man skapar utlösare för att lägga till ändringshändelser i granskningsloggtabeller

Jag kan ge dig en sorts algoritm att arbeta efter, det mesta av markarbetet är redan gjort:

Detta kan vara din granskningstabell, bör lägga till en tidsstämpelkolumn som ändrat datum eller mer information enligt dina krav:

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

Detta kan användas som en referensutlösare; Observera att det kommer att finnas en separat trigger för varje tabell:

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 ha flera infoga uttalanden en för varje kolumn. Om du vill sätta en begränsning för att inte infoga data som inte ändras kan du göra följande ändring i triggern:

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

Meddela om mer information krävs.



  1. Mysql gruppera i två kolumner och välj det högsta värdet för tredje kolumnen

  2. PostgreSQL-accent + skiftlägesokänslig sökning

  3. Oracle Sequence nextval hoppar nummer fram och tillbaka

  4. Hur ansluter du till en MySQL-databas med Oracle SQL Developer?