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

Вниз

Понял где возникает ошибка в триггере   Найти похожие ветки 

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

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


 
}|{yk ©   (2004-04-26 11:21) [1]

Так никто не знает?


 
Соловьев ©   (2004-04-26 11:29) [2]


> Проблема в том что поле комментария имеет collate win1251

это как?


 
}|{yk ©   (2004-04-26 11:38) [3]

Значит поле комментария имеет тип varchar(50), character set win1251 и collate win1251. В подключении все правильно, да и работает все нормально. К тому же триггер работает независимо от настроек подключения


 
Соловьев ©   (2004-04-26 11:44) [4]


> если это поле не обрабатывать в триггере и не заносить в
> лог, то все нормально.

код


 
Sergey13 ©   (2004-04-26 11:53) [5]

А че за тригер то? Щас вот накидал для прикола, прошло
CREATE TRIGGER T2_BI FOR T2
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
 IF (NEW.F1 IS NULL) THEN
   NEW.F1 = GEN_ID(all_gen,1);
 new.f2="Ля-ля-ля";
END


 
Anonymous   (2004-04-26 12:05) [6]

Попробуй  collate поменять.


 
}|{yk ©   (2004-04-26 12:23) [7]

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


 
ЮЮ ©   (2004-04-26 12:32) [8]

И, полагаешь, все это можно засунуть в varchar(255)?


 
Соловьев ©   (2004-04-26 12:37) [9]


> DECLARE VARIABLE NEW_VALUE varchar(255);
> DECLARE VARIABLE OLD_VALUE varchar(255);

ты уверен что длины хватает?
и еще я так понимаю ты числа конкатенуешь как строки? читай хелп, млин...


 
}|{yk ©   (2004-04-26 12:47) [10]

>еще я так понимаю ты числа конкатенуешь как строки?
А в чем проблема?


 
stud ©   (2004-04-26 12:50) [11]

какя версия иб


 
}|{yk ©   (2004-04-26 12:52) [12]

>еще я так понимаю ты числа конкатенуешь как строки?
А в чем проблема?


 
}|{yk ©   (2004-04-26 12:55) [13]

все работает
поставил длину 4000 и все влазит
теперь нужно думать как распарсить этот blob


 
Соловьев ©   (2004-04-26 13:06) [14]


> }|{yk ©   (26.04.04 12:55) [13]

у тебя по логу часто идет выборка? если нет, то попробуй для таких таблиц задать внешний файл. и сделай нормальную структуру по каждую таблицу


 
}|{yk ©   (2004-04-26 13:28) [15]

Вроде бы firebird не поддерживает хранение во внешних файлах. (по крайней мере это не рекомендуется)
Вопрос в другом - где хранится в системных таблицах структура таблиц? Чтобы была возможность получать схему таблицы в формате xsd


 
Соловьев ©   (2004-04-26 13:30) [16]


> Вроде бы firebird не поддерживает хранение во внешних файлах.
> (по крайней мере это не рекомендуется)

подерживает. где написано что не рекомендуется?


 
}|{yk ©   (2004-04-26 13:37) [17]

проблемы с безопасностью...


 
Соловьев ©   (2004-04-26 13:38) [18]


> проблемы с безопасностью...

если правильно хранить то никаких проблем. Защитить на уровне ОС.


 
}|{yk ©   (2004-04-26 13:41) [19]

Нет ну я знаю что можно создавать таблицы с параметром external file name_of_file. но я не думаю что это то, что нужно


 
Соловьев ©   (2004-04-26 14:02) [20]


> }|{yk ©   (26.04.04 13:41) [19]

почему?

если хочешь, то посмотри как делает лог IBExpert - может тебе это надо?


 
}|{yk ©   (2004-04-26 14:49) [21]

да я и так по образу IBExpert делал, только у меня логи по всем таблицам будут храниться в одной таблице - для удобства



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

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

Наверх




Память: 0.52 MB
Время: 0.025 c
1-1083824616
Tex
2004-05-06 10:23
2004.05.23
как сконвертить bmp в jpg


1-1084265286
webAve
2004-05-11 12:48
2004.05.23
Мастера! Помогите решить проблему:


7-1081264318
alan2
2004-04-06 19:11
2004.05.23
Как в Дэлфи изменить настройки биоса под ХР виндой?


1-1084196546
webpauk
2004-05-10 17:42
2004.05.23
PopupMenu


8-1078388044
GH@ST
2004-03-04 11:14
2004.05.23
Как можно уменьшить JPG?