Лог на таблицу

Администирование клиентской и серверной части InterBase, Firebird, Yaffil. Настройка файла конфигурации и т.п.

Модераторы: kdv, Alexey Kovyazin

Ответить
tie
Сообщения: 39
Зарегистрирован: 14 июл 2005, 12:12

Лог на таблицу

Сообщение tie » 14 июл 2005, 12:53

Нужно сделать лог таблицу, которая будет отображать все изменения в данных основной таблицы
как жто сделать на сервере?

например:
есть таблица 1 с полями ID_T и F1,F2,F3 ... F100;
таблица 2 с полями ID, D_T, ID_T, FIELD, OLD_VAL, NEW_VAL;

любое добавление/изменение в любой записи любых данных в таблице 1, кроме ID_T, приводит к добавлению в таблицу 2 записи следующего вида:
ID, ID_T, FIELD, OLD_VAL, NEW_VAL;
1, 01.01.2005, 2, F1, null, 140 -- 'это мы добавили 140
...
12345, 10.01.2005, 2, F1, 140, 150 -- это изменили в поле F1 140 на 150

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 14 июл 2005, 13:05

Кури доку на предмет триггеров.

tie
Сообщения: 39
Зарегистрирован: 14 июл 2005, 12:12

Сообщение tie » 14 июл 2005, 17:11

Merlin писал(а):Кури доку на предмет триггеров.
Эт в смысле
if (new.F1<> old.F1) then
execute procedure to_log current_date, new.D_T, 'F1', old.F1, new.F1;
...
if (new.F100<> old.F100) then
execute procedure to_log current_date, new.D_T, 'F100', old.F100, new.F100;

а по красивше?

tie
Сообщения: 39
Зарегистрирован: 14 июл 2005, 12:12

Сообщение tie » 14 июл 2005, 17:17

Причем сделать для:
BEFORE INSERT
и
BEFORE UPDATE
??????????????????????????????????????
Неужели я первый кто с этим столкнулся?
неверю.................

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 14 июл 2005, 17:59

Последний. Все остальные давно написали себе за пару часиков приблуду, генерящую такие или похожие триггера автоматом. А самые ленивые пользуются тем, что прредусмотрено на эту тему в IBExpert.

tie
Сообщения: 39
Зарегистрирован: 14 июл 2005, 12:12

Сообщение tie » 15 июл 2005, 01:14

ну чтож
прийдется трясти бубном
коль других (нормальных) способов не придумали.
а я так ждал надеялся и верил...

Ответить