MySQL: удалени записи и логирование этого события | |
---|---|
Vedmak Автор Сообщений: 5748 Откуда: CiTY Дата регистрации: 30.10.2003 |
Поделитесь логикой как фиксировать факт удаления пользователем ...
У меня есть журнал событий и там заготовка. Вот настал момент когда пользователь удалил важное. Как собирать сопутствующую инфу? ------------------ Говорить стоит лишь для тех, кто слушает. ![]() |
Re: MySQL: удалени записи и логирование этого события | |
---|---|
Vedmak Автор Сообщений: 5748 Откуда: CiTY Дата регистрации: 30.10.2003 |
Я создавал таблицу логирования любых изменений данных. ЛЮБЫХ! Она тяжелее самих данных. Нуждаюсь в совете...
------------------ Говорить стоит лишь для тех, кто слушает. ![]() |
Re: MySQL: удалени записи и логирование этого события | |
---|---|
ABB Сообщений: 131 Откуда: Санкт-Петербург Дата регистрации: 21.10.2006 |
ChatGPT:
В MySQL можно также фиксировать факт удаления пользователем записи в журнале событий или логе. Для этого можно использовать следующую логику: 1. Создать таблицу, которая будет служить журналом событий. Например: CREATE TABLE event_log ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, event_type VARCHAR(50) NOT NULL, table_name VARCHAR(50) NOT NULL, user_name VARCHAR(50) NOT NULL, timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); Эта таблица будет хранить информацию о типе события, имени таблицы, имени пользователя и времени события. 2. Создать триггер для таблицы, при срабатывании которого будет происходить запись события в журнал. Например: DELIMITER // CREATE TRIGGER trigger_name AFTER DELETE ON table_name FOR EACH ROW BEGIN INSERT INTO event_log (event_type, table_name, user_name) VALUES ('delete', 'table_name', USER()); END // DELIMITER ; Этот триггер будет вызываться после удаления каждой строки в таблице и будет записывать в журнал событий информацию о типе события, имени таблицы и имени пользователя. 3. При необходимости можно также использовать команду ROLLBACK для отмены транзакции, если удаление не было успешным. Таким образом, при удалении записи пользователем будет происходить запись факта в журнале событий, что позволяет отслеживать действия пользователей и быстрее восстанавливать информацию при необходимости. ![]() |
Re: MySQL: удалени записи и логирование этого события | |
---|---|
PaulWist Сообщений: 14432 Дата регистрации: 01.04.2004 |
Так в чем вопрос??
Если, как логировать значения, то у меня триггеры на I/D/U пишут записи/значения в xml для «простых» данных, для lob полей приходится хранить как есть. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) ![]() |
Re: MySQL: удалени записи и логирование этого события | |
---|---|
Vedmak Автор Сообщений: 5748 Откуда: CiTY Дата регистрации: 30.10.2003 |
ю
------------------ Говорить стоит лишь для тех, кто слушает. Исправлено 1 раз(а). Последнее : Vedmak, 24.03.23 20:58 ![]() |
Re: MySQL: удалени записи и логирование этого события | |
---|---|
Vedmak Автор Сообщений: 5748 Откуда: CiTY Дата регистрации: 30.10.2003 |
А как вы видите поиск в лог-таблице где, априори, бизнеслогика отсутствует. Пример такой покажите... пожалуйста.
------------------ Говорить стоит лишь для тех, кто слушает. ![]() |
Re: MySQL: удалени записи и логирование этого события | |
---|---|
PaulWist Сообщений: 14432 Дата регистрации: 01.04.2004 |
По памяти, сама табличка
Триггер складывает поля и записи в XML, таким образом получается: 1. Количество полей в таблице может меняться, но не меняется сам триггер 2. Одна операция DML "лежит" в одной записи (не одна удаленная запись на одну запись лога, а в одной записи лога лежит 100-1000 записей попавших под операцию Delete). Соотвественно, знаем что удаление было вчера из таблицы такой-то
получаем что, когда удалено
А причем тут бизнес логика?? ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) Исправлено 1 раз(а). Последнее : PaulWist, 27.03.23 09:15 ![]() |
© 2000-2023 Fox Club  |