Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Триггер. Не записівается в блоб-поле


}|{yk ©   (2004-04-23 16:16:00) 

Такой триггер

CREATE TRIGGER APP_BANK_AI FOR APP_BANK
ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 32767
AS
DECLARE VARIABLE TID INTEGER;
DECLARE VARIABLE NEW_VALUE varchar(255);
DECLARE VARIABLE OLD_VALUE varchar(255);
BEGIN
 TID = GEN_ID(GEN_APP_LOG_ID,1);
 if (inserting or updating) then
  begin
 NEW_VALUE='<app_bank>';
 NEW_VALUE=NEW_VALUE||'<bank_id>'||new.bank_id||'</bank_id>';
 NEW_VALUE=NEW_VALUE||'<line_id>'||new.line_id||'</line_id>';
 NEW_VALUE=NEW_VALUE||'<set_id>'||new.set_id||'</set_id>';
 NEW_VALUE=NEW_VALUE||'<cust1_id>'||new.cust1_id||'</cust1_id>';
 NEW_VALUE=NEW_VALUE||'<cust2_id>'||new.cust2_id||'</cust2_id>';
 NEW_VALUE=NEW_VALUE||'<summa>'||new.summa||'</summa>';
 NEW_VALUE=NEW_VALUE||'<commentar>'||new.commentar||'</commentar>';
 NEW_VALUE=NEW_VALUE||'<unit_id>'||new.unit_id||'</unit_id>';
 NEW_VALUE=NEW_VALUE||'<plat_date>'||new.plat_date||'</plat_date>';
 NEW_VALUE=NEW_VALUE||'<rs_id>'||new.rs_id||'</rs_id>';
 NEW_VALUE=NEW_VALUE||'</app_bank>';
  end
 if (deleting or updating) then
  begin
 OLD_VALUE='<app_bank>';
 OLD_VALUE=OLD_VALUE||'<bank_id>'||old.bank_id||'</bank_id>';
 OLD_VALUE=OLD_VALUE||'<line_id>'||old.line_id||'</line_id>';
 OLD_VALUE=OLD_VALUE||'<set_id>'||old.set_id||'</set_id>';
 OLD_VALUE=OLD_VALUE||'<cust1_id>'||old.cust1_id||'</cust1_id>';
 OLD_VALUE=OLD_VALUE||'<cust2_id>'||old.cust2_id||'</cust2_id>';
 OLD_VALUE=OLD_VALUE||'<summa>'||old.summa||'</summa>';
 OLD_VALUE=OLD_VALUE||'<commentar>'||old.commentar||'</commentar>';
 OLD_VALUE=OLD_VALUE||'<unit_id>'||old.unit_id||'</unit_id>';
 OLD_VALUE=OLD_VALUE||'<plat_date>'||old.plat_date||'</plat_date>';
 OLD_VALUE=OLD_VALUE||'<rs_id>'||old.rs_id||'</rs_id>';
 OLD_VALUE=OLD_VALUE||'</app_bank>';
  end
 if (inserting) then
 INSERT INTO APP_LOG (APP_LOG_ID,APP_LOG_TIME,APP_LOG_OPERATION,APP_LOG_TABLE,
   APP_LOG_USER,APP_LOG_NEW_VALUE)
   VALUES (:TID, 'NOW','insert', 'APP_BANK', USER,:NEW_VALUE);
 if (updating) then
 INSERT INTO APP_LOG (APP_LOG_ID,APP_LOG_TIME,APP_LOG_OPERATION,APP_LOG_TABLE,
   APP_LOG_USER,APP_LOG_OLD_VALUE,APP_LOG_NEW_VALUE)
   VALUES (:TID, 'NOW','update', 'APP_BANK', USER,:OLD_VALUE,:NEW_VALUE);
 if (deleting) then
 INSERT INTO APP_LOG (APP_LOG_ID,APP_LOG_TIME,APP_LOG_OPERATION,APP_LOG_TABLE,
   APP_LOG_USER,APP_LOG_OLD_VALUE)
   VALUES (:TID, 'NOW','delete', 'APP_BANK', USER,:OLD_VALUE);
END

Структура лога
CREATE TABLE APP_LOG (
   APP_LOG_ID         IDENTIFIER /* INTEGER */ NOT NULL,
   APP_LOG_TIME       TIMESTAMP NOT NULL,
   APP_LOG_OPERATION  VARCHAR(10) NOT NULL COLLATE WIN1251_UA,
   APP_LOG_TABLE      VARCHAR(32) NOT NULL COLLATE WIN1251_UA,
   APP_LOG_USER       VARCHAR(32) COLLATE WIN1251_UA,
   APP_LOG_MACHINE    VARCHAR(32) COLLATE WIN1251_UA,
   APP_LOG_OLD_VALUE  BLOB SUB_TYPE 1 SEGMENT SIZE 100,
   APP_LOG_NEW_VALUE  BLOB SUB_TYPE 1 SEGMENT SIZE 100
);

Лог ведется как нужно, только вот ни old_value, ни new_value не пишется. Никто не подскажет, почему?
FireBird 1.5


}|{yk   (2004-04-23 17:02:00) [1]

С блобами так обращаются
и все пишется
Проблема опять с charset...


Johnmen   (2004-04-23 16:54:00) [2]

Потому, что с блобами так не обращаются.

Когда начнешь читать доки ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо