Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak utworzyć wyzwalacze, aby dodać zdarzenia zmiany do tabel dziennika audytu?

Mogę podać rodzaj algorytmu do pracy, większość prac ziemnych już została wykonana:

Może to być Twoja tabela audytu, należy dodać kolumnę sygnatury czasowej jako datę modyfikacji lub więcej informacji zgodnie z wymaganiami:

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

Może to służyć jako wyzwalacz odniesienia; zauważ, że dla każdej tabeli będzie osobny wyzwalacz:

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

Możesz mieć wiele instrukcji wstawiania, po jednej dla każdej kolumny. Jeśli chcesz wprowadzić ograniczenie dotyczące niewstawiania danych, które nie zostały zmienione, możesz dokonać następującej zmiany w wyzwalaczu:

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

Daj znać, jeśli potrzeba więcej informacji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wywołanie funkcji członkowskiej rowCount() na obiekcie niebędącym obiektem

  2. Zabezpieczanie php api do użycia w aplikacji na Androida

  3. Czy limit rozmiaru VARCHAR ma znaczenie?

  4. PHP MySQL LOAD DATA INFILE Pomoc

  5. Przekroczenie limitu czasu skryptu podczas importu bazy danych