Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > Базы данных

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжёлое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
PayPal PayPal_Email E-mail для связи по вопросу помощи
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 08.07.2009, 10:56   #1
Неактивный пользователь
 
Пол:Мужской
Регистрация: 08.01.2008
Сообщений: 14
Репутация: 0
По умолчанию Помогите с триггером Firebird 2.0

Трудность заключается в том, что необходимо считать сумму десятичных значений двух ячеек в строке и записывать результат в третью.
Тип полей, к сожалению VARCHAR!!!
Изменить просто так не удается, может есть способ?
Написал вот такой триггер:
Код:
CREATE trigger sum5v for ssvch
active after insert or update position 0
AS
declare variable s float;
declare variable s1 float;
begin
select "5PRM","5PRM2" from ssvch where "5PRM" = new."5PRM" into :s, :s1 ;
  if ((NEW."5PRM" is not null) and
     ((old."5PRM" is null) or
     (NEW."5PRM" <> OLD."5PRM"))) then
  begin
  update ssvch set "5VSUM" = :s + :s1
  where "5VSUM" = old."5VSUM";
  end
end
Но считать он почему-то не хочет...
Mustd1e вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: столы для кухни раздвижныекнижная полка пк-30кРекомендуем в КНС Нева Ippon Innova RT II 3000 - доставкой по Санкт-Петербургу и СЗАОдизайн завод концертная площадкаАвтоматизируйте ручные задачи с помощью Albato: интеграции с мой склад - Забудьте о длительных и дорогостоящих API интеграциях.


Старый 08.07.2009, 13:43   #2
Vasuha
Постоялец
 
Пол:Мужской
Регистрация: 13.03.2008
Адрес: Минск
Сообщений: 257
Репутация: 231
По умолчанию Re: Помогите с триггером Firebird 2.0

Может третье поле сделать вычисляемым? COMPUTED BY?
__________________
Vasuha вне форума
 
Ответить с цитированием Вверх
Старый 15.07.2009, 09:05   #3
Демьян
Новичок
 
Аватар для Демьян
 
Пол:Мужской
Регистрация: 01.02.2007
Сообщений: 23
Репутация: 1
По умолчанию Re: Помогите с триггером Firebird 2.0

Типы приводить не пробовали?
Демьян вне форума
 
Ответить с цитированием Вверх
Старый 31.07.2009, 08:59   #4
Mustd1e
Неактивный пользователь
 
Пол:Мужской
Регистрация: 08.01.2008
Сообщений: 14
Репутация: 0
По умолчанию Re: Помогите с триггером Firebird 2.0

to Vasuha
К сожалению все поля заполнены данными. COMPUTED BY не подойдет.

Приведение к типу не пробовал, но думаю не прокатит по той же причине.

P.S. Вставьте код... если это возможно.
Mustd1e вне форума
 
Ответить с цитированием Вверх
Старый 10.01.2010, 22:05   #5
LuceferAB
Пользователь
 
Пол:Мужской
Регистрация: 11.03.2008
Сообщений: 158
Репутация: 33
По умолчанию Re: Помогите с триггером Firebird 2.0

>К сожалению все поля заполнены данными. COMPUTED BY не подойдет.
Поясни плиз...
LuceferAB вне форума
 
Ответить с цитированием Вверх
Старый 29.01.2010, 01:52   #6
glumba
Новичок
 
Пол:Мужской
Регистрация: 03.03.2009
Сообщений: 16
Репутация: 1
По умолчанию Re: Помогите с триггером Firebird 2.0

и правильно делает, что не хочет считать!
Код:
select "5PRM","5PRM2" from ssvch where "5PRM" = new."5PRM"
означает
Код:
select OLD.5PRM, OLD.5PRM2 from ssvch where OLD.5PRM = new.5PRM
а потом ты заявляешь
Код:
IF NEW."5PRM" <> OLD."5PRM"
конечно же это никогда не произойдёт
и ваще, зачем так всё сложно?

Код:
CREATE trigger sum5v for ssvch
active after insert or update position 0
AS
declare variable s float;
declare variable s1 float;
begin
   s = CAST(NEW.5PRM AS float); /*можно пробовать и без CAST*/
  s1 = CAST(NEW.5PRM2 AS float);
  NEW.5VSUM = :s + :s2;
end
или даже ещё проще, если полагаться на то, что Firebird сам приведёт типы
Код:
begin
  NEW.5VSUM = NEW.5PRM  + NEW.5PRM2;
end
glumba вне форума
 
Ответить с цитированием Вверх
Ответ

Опции темы
Опции просмотра

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FIBPlus (работа с Firebird) AlexanderP Компоненты 143 20.12.2022 08:35
БД Firebird Greg777 Delphi 61 25.03.2015 23:01
Обновление FireBird biksant Базы данных 15 13.04.2010 06:56
Помогите пожалуйста с Firebird vng23 Базы данных 3 17.02.2010 05:51
FireBird 2.0.3 Mustd1e Базы данных 5 10.01.2010 22:02

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 06:53. Часовой пояс GMT +3.


Copyright ©2004 - 2024 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.15075 секунды с 11 запросами