MySQL: удалени записи и логирование этого события | |
---|---|
Vedmak Автор Сообщений: 5973 Откуда: CiTY Дата регистрации: 30.10.2003 |
Поделитесь логикой как фиксировать факт удаления пользователем ...
У меня есть журнал событий и там заготовка. Вот настал момент когда пользователь удалил важное. Как собирать сопутствующую инфу? ------------------ Говорить стоит лишь для тех, кто слушает. |
Re: MySQL: удалени записи и логирование этого события | |
---|---|
Vedmak Автор Сообщений: 5973 Откуда: CiTY Дата регистрации: 30.10.2003 |
Я создавал таблицу логирования любых изменений данных. ЛЮБЫХ! Она тяжелее самих данных. Нуждаюсь в совете...
------------------ Говорить стоит лишь для тех, кто слушает. |
Re: MySQL: удалени записи и логирование этого события | |
---|---|
ABB Сообщений: 149 Откуда: Санкт-Петербург Дата регистрации: 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 Сообщений: 14625 Дата регистрации: 01.04.2004 |
Так в чем вопрос??
Если, как логировать значения, то у меня триггеры на I/D/U пишут записи/значения в xml для «простых» данных, для lob полей приходится хранить как есть. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: MySQL: удалени записи и логирование этого события | |
---|---|
Vedmak Автор Сообщений: 5973 Откуда: CiTY Дата регистрации: 30.10.2003 |
ю
------------------ Говорить стоит лишь для тех, кто слушает. Исправлено 1 раз(а). Последнее : Vedmak, 24.03.23 20:58 |
Re: MySQL: удалени записи и логирование этого события | |
---|---|
Vedmak Автор Сообщений: 5973 Откуда: CiTY Дата регистрации: 30.10.2003 |
А как вы видите поиск в лог-таблице где, априори, бизнеслогика отсутствует. Пример такой покажите... пожалуйста.
------------------ Говорить стоит лишь для тех, кто слушает. |
Re: MySQL: удалени записи и логирование этого события | |
---|---|
PaulWist Сообщений: 14625 Дата регистрации: 01.04.2004 |
По памяти, сама табличка
Триггер складывает поля и записи в XML, таким образом получается: 1. Количество полей в таблице может меняться, но не меняется сам триггер 2. Одна операция DML "лежит" в одной записи (не одна удаленная запись на одну запись лога, а в одной записи лога лежит 100-1000 записей попавших под операцию Delete). Соотвественно, знаем что удаление было вчера из таблицы такой-то
получаем что, когда удалено
А причем тут бизнес логика?? ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) Исправлено 1 раз(а). Последнее : PaulWist, 27.03.23 09:15 |
Re: MySQL: удалени записи и логирование этого события | |
---|---|
Vedmak Автор Сообщений: 5973 Откуда: CiTY Дата регистрации: 30.10.2003 |
Я хотелось бы отловить не только сам факт удаления записи из таблицы, а еще какой записи. Т.е. её содержимое перед удалением. А потом выдернуть историю изменений ЭТОЙ записи из event_list. Т.е. обращаться не только к полям таблицы, а еще и к полям JSON\XML которые содержат данные записи с которой производились операции I\U\D. Например, приложенном файле я фиксирую факт INSERT/UPDATE накладной, но хотелось бы иметь возможно вести историю того что именно менялось. Если 3 пользователя меняли накладную 5 раз в течении недели, то хотелось бы видеть что и в какой таблице пользователь апдейтил. Не хотелось бы для каждой таблицы создавать клона с историей изменений. ------------------ Говорить стоит лишь для тех, кто слушает. Исправлено 1 раз(а). Последнее : Vedmak, 13.06.23 20:06 |
Re: MySQL: удалени записи и логирование этого события | |
---|---|
PaulWist Сообщений: 14625 Дата регистрации: 01.04.2004 |
Ты не понял главного. В триггере заполняется XML со значениями которые удаляются (модифицируются), те создаётся XML-документ, в который входят все модифицируемые поля, хочешь одновременно старые и новые - формируй XML из old и new, хочешь JSON-поля "помнить" ничто не мешает их тоже в XML положить.
Дык, вроде рассказал как сам делаю, прочти ещё раз внимательно. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: MySQL: удалени записи и логирование этого события | |
---|---|
Vedmak Автор Сообщений: 5973 Откуда: CiTY Дата регистрации: 30.10.2003 |
Долетело! ) Спасибо! Буду думать!
------------------ Говорить стоит лишь для тех, кто слушает. |
Re: MySQL: удалени записи и логирование этого события | |
---|---|
sphinx Сообщений: 31188 Откуда: Каменск-Уральски Дата регистрации: 22.11.2006 |
Паша это уже приводил, я говорил. Но руки не дошли найти и выслать.
P.S. сам пытался подобную таблицу, значения old/new тупо в строке хранил (основные типы приводятся к строковому всегда), но показалось неуклюже и не знал, как запросом выдернуть. Про XML не догадался. ------------------ "Veni, vidi, vici!"(с) Исправлено 1 раз(а). Последнее : sphinx, 22.07.23 08:07 |
© 2000-2024 Fox Club  |