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

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

Понял где возникает ошибка в триггере


Страницы:   1 2

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

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


}|{yk   (2004-04-26 14:49:00) [1]

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


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


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

почему?

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


}|{yk   (2004-04-26 13:41:00) [3]

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


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


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

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


}|{yk   (2004-04-26 13:37:00) [5]

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


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


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

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


}|{yk   (2004-04-26 13:28:00) [7]

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


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


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

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


}|{yk   (2004-04-26 12:55:00) [9]

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


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

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


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

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


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

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


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


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

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


ЮЮ   (2004-04-26 12:32:00) [14]

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


}|{yk   (2004-04-26 12:23:00) [15]

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


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

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


Sergey13   (2004-04-26 11:53:00) [17]

А че за тригер то? Щас вот накидал для прикола, прошло
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


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


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

код


}|{yk   (2004-04-26 11:38:00) [19]

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


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


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

это как?


Страницы:   1 2

Наверх

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