|
Постоянный
Регистрация: 15.06.2007
Сообщений: 527
Провел на форуме: 1734541
Репутация:
214
|
|
Всем привет,появилась необходимость сделать небольшой аудит бд.
т.е. на каждое изменение делать наобх записи в таблице аудита.
тригерры не катят т.к. в одном триггере нельзя выполнить неск дейтвий(н-р 2..-10 инсертов) да и таблицы такие разные что под каждую надо писать свой триггер:
формат ввода данных в аудит такой
PHP код:
INSERT INTO audit set `date`=now(),`time`=now(),`user_id`='$_SESSION[user_id]',
`table`='название табицы',`column`='колонка которая изменилась',`pk`='примари кей табл',`oldvalue`='',`newvalue`=$_POST[user_id]"
приведу конкретный пример(запрос в бд)
PHP код:
"INSERT INTO holidays (id,user_id,date_start,date_finish,type_id,audit_id)
VALUES('','$_POST[user_id]','$_POST[date_start]',
'$_POST[date_finish]','$_POST[holidays_type]',
'$_SESSION[user_id]')";
отправка в аудит:
PHP код:
$audit="INSERT INTO audit set `date`=now(),`time`=now(),`user_id`='$_SESSION[user_id]',
`table`='holidays',`column`='user_id',`pk`='id',`oldvalue`='',
`newvalue`=$_POST[user_id]";
$audit2="INSERT INTO audit set `date`=now(),`time`=now(),`user_id`='$_SESSION[user_id]',
`table`='holidays',`column`='С',`pk`='id',`oldvalue`='',
`newvalue`='$_POST[date_start]'";
$audit3="INSERT INTO audit set `date`=now(),`time`=now(),`user_id`='$_SESSION[user_id]',
`table`='holidays',`column`='По',`pk`='id',`oldvalue`='',
`newvalue`='$_POST[date_finish]'"
........
Дак вот думаю реально ли написать функцию которой на вход мы будем подавать сам запрос в таблицу а она уже (через регулярки или еще как) будет инсертить в аудит и выдирать поля,значения и действия...И САМОЕ ГЛАВНОЕ чтоб это было практически универсально для каждой таблицы...у кого какие домыслы,поделитесь!?
Последний раз редактировалось svesve; 28.01.2009 в 18:17..
|