Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

как на MYSQL написать тригер аудита изменений, чтобы записывать изменения в таблице

Практика




как на MYSQL написать тригер аудита изменений, чтобы записывать изменения в таблице
можно например так


CREATE TABLE logevents (
id int(11) NOT NULL AUTO_INCREMENT,
event text NOT NULL,
timeevent timestamp DEFAULT CURRENT_TIMESTAMP,
id_user int(11) NOT NULL DEFAULT 0,
ip varchar(255) NOT NULL DEFAULT 'not indef',
old_value varchar(255) DEFAULT NULL,
new_value int(11) DEFAULT NULL,
typeeventint(11) DEFAULT NULL,
PRIMARY KEY (id)
)
ENGINE = INNODB

CHARACTER SET utf8
COLLATE utf8_general_ci
COMMENT = 'запись событий';


треггер на обновление


CREATE
DEFINER = 'root'@'127.0.0.1'
TRIGGER audit_change
AFTER UPDATE
ON tible_for_audit
FOR EACH ROW
BEGIN

IF (@DISABLE_TRIGGERS IS NULL) THEN

IF (OLD.field1 <> NEW.field1) THEN
INSERT INTO log_events
set event='field1',
old_value=OLD.field1,
new_value= NEW.field1;
END IF;

IF (OLD.field2<> NEW.field2) THEN
INSERT INTO log_events
set event='field2' ,
old_value=OLD.field2,
new_value= NEW.field2;
END IF;

IF (OLD.field3<> NEW.field3) THEN
INSERT INTO log_events
set event='field1',
old_value=OLD.field2,
new_value= NEW.field2; END IF;





END IF;




и триггер на удаление после

CREATE
DEFINER = 'root'@'127.0.0.1'
TRIGGER audit_del
AFTER DELETE
ON table
FOR EACH ROW
IF (@DISABLE_TRIGGERS IS NULL) THEN


INSERT INTO logevents
set event='field2',
old_value=OLD.field2,
idrole= OLD.id,
typeevent=3;



INSERT INTO logevents
set event='field3' ,
old_value=OLD.field3,
idrole= OLD.id,
typeevent=3;



END IF
создано: 2013-09-09
обновлено: 2021-03-13
132522



Рейтиг 10 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

MySql (Maria DB)

Термины: MySql (Maria DB)