Страница 1 из 1

Delta для логов

Добавлено: 01 дек 2004, 16:17
Linco
Хочу прикрутить к табличкам простейший логгер типа:
CREATE TABLE LOGTABLE (
ID INTEGER NOT NULL,
CHANGETIME TIMESTAMP NOT NULL,
TABLENAME VARCHAR(30) NOT NULL,
RECID INTEGER NOT NULL,
OPERATION TLOGOPERATIONS NOT NULL /* TLOGOPERATIONS = CHAR(1) NOT NULL CHECK (value in ('I','U','D')) */,
LOGUSER VARCHAR(8) NOT NULL,
LOGROLE VARCHAR(31),
OLDVALUEDELTA VARCHAR(1000),
NEWVALUEDELTA VARCHAR(1000)
);
Все ничего, однако как с минимальными затратами получить дельту между старой и новой записью.
Например, делаю триггер:
insert into logtable
values(GEN_ID(GEN_ABONENTSTABLE_ID_AUTOINC,1),
current_timestamp,
'tablename',
NEW.id,
'I',
current_user,
current_role,
null,
(new.id||', '||new.abonentname||', '||new.responsible||', '||new.phone));
Хоть триггер компилируется, вычисляемое значение не считается.
Какие варианты логирования есть.
ЗЫ Сразу скажу, разбивать по полям и логировать каждое поле отдельно в отдельной табличке мне не нужно, лог простой.
ЗЗЫ FB1.5

Добавлено: 01 дек 2004, 16:57
kdv
у тебя один из столбцов которым делается конкатенация (a||b) содержит null. грубо говоря, null + x = null

Добавлено: 01 дек 2004, 17:25
Linco
Спасибо, это не учел :), как стороки складывал