Аудит таблиц с параметрами - PullRequest
0 голосов
/ 25 января 2019

Я хочу проверить изменения в нескольких таблицах в таблице истории.Я читал о триггерах, проблема в том, что я хочу получить причину для операции над таблицей, а также бэкэнд-пользователя, который сделал это, а не пользователя БД.

Так что у меня будет как

Таблица 1

ID_TABLE_1
FIELD_A
FIELD_B

Таблица 2

ID_TABLE_2
FIELD_C
FIELD_D

Таблица ИСТОРИЯ

TABLE_NAME
RECORD_ID
USER
REASON
OPERATION

В поисках лучшего подхода здесь, как я вижу, у меня есть дваварианты:

Я могу создать триггер для таблиц, сохранить TABLE_NAME, RECORD_ID и OPERATION, а затем иметь функцию для обновления USER и REASON?
или

Создать функцию дляделать все это?

1 Ответ

0 голосов
/ 25 января 2019

Используйте предикаты, такие как INSERTING / UPDATING / DELETING в триггере, чтобы определить, какая операция DML происходит.

Попробуйте это:

create trigger trg_operation_type
  before insert or update
  on table_1
  for each row
begin
  case
    when inserting then
        --insert to history table
    when updating then
        --insert to history table
  end case;
end;
...