Итак, это моя ситуация:
У меня есть администратор, который может добавлять, удалять и редактировать других пользователей. Я ищу решение, как записать действия администратора. Должен ли я сравнить таблицу, на которую влияют до и после выполнения запроса, и как я могу сохранить разницу в другой таблице?
Это таблица, которая будет затронута:
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)
Я ищу для хранения «Удаленные» + данные удаленных пользователей в другой таблице.
Два пути :
Простое решение, лучше иметь флажок «удален» и пометить его как «1», администратор удалит его. Это мягкий метод удаления.
Hard Delete: Создать таблицу журнала, аналогичную таблице базовых пользователей.
Есть триггер, когда удаление происходит. сохранить его в другой стол.
CREATE TRIGGER log_user_delete ПОСЛЕ УДАЛЕНИЯ для пользователей ДЛЯ КАЖДОГО РЯДА НАЧАТЬ INSERT INTO users_log (user_id, username и т. П. КОНЕЦ
Почему вы хотите хранить его в базе данных? любое конкретное требование. Обычно люди хранят такую информацию в журналах (файл). Я предложу, чтобы наряду с удаленными данными об использовании вы также сохранили выполненный им запрос, который поможет вам лучше отслеживать вещи.
Чтобы сохранить другое, вы можете попробовать что-то вроде этого — всякий раз, когда он выполняет команду с where
пункт вы делаете select
оператор с этим предложением и сохранить его в журналах и повторить после завершения выполнения его команды, кроме как в delete
дело.