Триггер для логов

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
outman
Сообщения: 2
Зарегистрирован: 10 авг 2005, 11:26

Триггер для логов

Сообщение outman » 10 авг 2005, 11:34

Хочу чтобы триггер писал логи по всем полям в таблицу LOG. Заминка в
получение нового значения поля: "new.:FIEL_NAME" Есть способ динамически подставлять имя поля к new.переменная ?

Код: Выделить всё

AS
DECLARE VARIABLE FIELD_NAME VARCHAR(31);
begin
  for select rdb$field_Name  from RDB$RELATION_FIELDS where rdb$relation_name='PAY'
  into FIELD_NAME
  do
    begin
         insert into logs(UID,
                          TABLE_NAME,
                          FIELD_NAME,
                          OLD_VALUE,
                          NEW_VALUE,
                          ACTION_DATE,
                          VALUE_ID)
                   Values(new.log_uid,
                          'PAY',
                          :FIELD_NAME,
                          old.:FIELD_NAME, /*вот тут и заминка*/
                          new.:FIELD_NAME,/*вот тут и заминка*/
                          "NOW",
                          new.cars_id );
    end
end

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 10 авг 2005, 11:39

Нет

outman
Сообщения: 2
Зарегистрирован: 10 авг 2005, 11:26

Сообщение outman » 10 авг 2005, 11:50

Может альтернатива есть какая-нибудь ? А то как приговор прям :(

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

Сообщение Merlin » 10 авг 2005, 12:21

Написать программулю, которая смотрит системные таблицы и генерит триггера по заданному шаблону. Полдня с перекурами. А если самообразовываться в этом плане лень, посмотреть как это делает IBExpert, там что-то было на эту тему.

Ответить