Я пытаюсь вставить старые и новые значения таблицы «Base» в таблицу аудита «Audit».Проблема в том, как хранить данные в таблице аудита.Если будет обновлено более одного столбца, я смогу сохранить его в этом формате.
Структура таблицы «Аудит»
Id | Column_Name | Old_Value | New_Value
1 | Strike | 4 | 5
2 | Spare | 3 | 7
3 | Score | 10 | 18
Мое решение дает следующую структуру
Id | old_strike | new_strike | old_spare | new_spare | old_score | new_score
1 | 4 | 5 | 3 | 7 | 10 | 18
Я пробовал это использовать триггер, чтобы сохранить старое и новое значение в строках, но мне было нелегко выяснить, как пройти для одного оператора вставки для каждого столбца.
AFTER INSERT OR UPDATE OR DELETE ON frame -- after event
FOR EACH ROW // fires for each record
BEGIN
INSERT INTO frame_audit(bowler_id,game_id,frame_number,
old_strike,new_strike,
old_spare,new_spare,
old_score,new_score,
change_date,operation)
VALUES(:NEW.bowler_id,:NEW.game_id,:NEW.frame_number,
:OLD.strike,:NEW.strike,
:OLD.spare,:NEW.spare,
:OLD.score,:NEW.score,
SYSDATE,'UPDATE');
END audit_frames```
// Structure of 'Audit' table
Id | Column_Name | Old_Value | New_Value
1 | Strike | 4 | 5
2 | Spare | 3 | 7
3 | Score | 10 | 18