триггер для таблицы журнала аудита

Я пытаюсь создать контрольный журнал для моей таблицы «экзамен», который показывает любые изменения, внесенные в оценку в таблице.

Итак, я застрял на создании триггера, который показывает имя пользователя и дату, которые изменяют текущую оценку.

Я искал вокруг, но ничего не могу найти. Любая помощь будет действительно оценена.

Исходная таблица:

      CREATE TABLE exam (
      student_no INT NOT NULL,
      exam_code CHAR(2) NOT NULL,
      grade TINYINT NULL,
      FOREIGN KEY (student_no) REFERENCES student (student_no),
      FOREIGN KEY (exam_code) REFERENCES course (exam_code));

Таблица аудита, которую я создал:

      CREATE TABLE Audit (
      student_no INT NOT NULL,
      exam_code CHAR(2) NOT NULL,
      old_grade TINYINT NULL,
      updated_grade TINYINT NULL,
      Current_username VARCHAR(30),
      Date_updated DATETIME
      );


      CREATE TRIGGER audit_trail
      ??????

person whocares6774    schedule 28.10.2017    source источник


Ответы (1)


Триггер ниже может быть опцией.

CREATE TRIGGER audit_trail
AFTER UPDATE ON exam
FOR EACH ROW 
BEGIN 
INSERT INTO Audit values(OLD.student_no,OLD.exam_code,OLD.grade,NEW.grade,CURRENT_USER(), CURRENT_TIMESTAMP);  
END;

После любого обновления в таблице exam вышеуказанный триггер вставит всю связанную информацию в таблицу Audit.

Вы можете проверить демонстрацию здесь

person zarruq    schedule 28.10.2017