Как сохранить действия пользователей (готовые запросы) в таблице?

Итак, это моя ситуация:
У меня есть администратор, который может добавлять, удалять и редактировать других пользователей. Я ищу решение, как записать действия администратора. Должен ли я сравнить таблицу, на которую влияют до и после выполнения запроса, и как я могу сохранить разницу в другой таблице?

Это таблица, которая будет затронута:

TABLE `t_user` (
`user_id` int(11) NOT NULL,
`username` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`password` char(32) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`reg_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`active` tinyint(1) NOT NULL,
`current_desk_book` int(11) NOT NULL,
`last_login` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Допустим, администратор пытается удалить пользователя с id=3запрос будет

"DELETE FROM t_user WHERE user_id= 3"

Это удаленные данные пользователя:

(3, 'user3', 'fa6daddc77ac9b5ee42ffd31e7d6e014', '[email protected]', '2016-09-08 11:29:38', 1, 1, NULL)

Я ищу для хранения «Удаленные» + данные удаленных пользователей в другой таблице.

0

Решение

Два пути :
Простое решение, лучше иметь флажок «удален» и пометить его как «1», администратор удалит его. Это мягкий метод удаления.

Hard Delete: Создать таблицу журнала, аналогичную таблице базовых пользователей.
Есть триггер, когда удаление происходит. сохранить его в другой стол.

CREATE TRIGGER log_user_delete ПОСЛЕ УДАЛЕНИЯ для пользователей
ДЛЯ КАЖДОГО РЯДА
НАЧАТЬ
INSERT INTO users_log (user_id, username и т. П.
КОНЕЦ

1

Другие решения

Почему вы хотите хранить его в базе данных? любое конкретное требование. Обычно люди хранят такую ​​информацию в журналах (файл). Я предложу, чтобы наряду с удаленными данными об использовании вы также сохранили выполненный им запрос, который поможет вам лучше отслеживать вещи.

Чтобы сохранить другое, вы можете попробовать что-то вроде этого — всякий раз, когда он выполняет команду с where пункт вы делаете select оператор с этим предложением и сохранить его в журналах и повторить после завершения выполнения его команды, кроме как в delete дело.

1

По вопросам рекламы [email protected]