Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.23;
Скачать: CL | DM;

Вниз

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

 
}|{yk ©   (2004-04-23 16:16) [0]

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

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


 
Johnmen ©   (2004-04-23 16:54) [1]

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

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


 
}|{yk ©   (2004-04-23 17:02) [2]

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



Страницы: 1 вся ветка

Текущий архив: 2004.05.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.025 c
3-1082983098
ceval
2004-04-26 16:38
2004.05.23
Помогите разобраться -поиск по нескольким полям


3-1083298338
vpaul
2004-04-30 08:12
2004.05.23
Базы данных


1-1083922607
BFG9k
2004-05-07 13:36
2004.05.23
TPageProducer


7-1081925751
Layner
2004-04-14 10:55
2004.05.23
Снова о времени загрузки винды.


3-1083126056
russko
2004-04-28 08:20
2004.05.23
Создание таблицы при помощи SQL-файла