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

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

Добавлено: 10 авг 2005, 11:34
outman
Хочу чтобы триггер писал логи по всем полям в таблицу 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

Добавлено: 10 авг 2005, 11:39
hvlad
Нет

Добавлено: 10 авг 2005, 11:50
outman
Может альтернатива есть какая-нибудь ? А то как приговор прям :(

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