![]() |
|
| Правила Форума редакция от 22.06.2020 |
|
|||||||
|
|
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже. |
|
![]() |
|
|
Опции темы | Опции просмотра |
Language
|
|
|
#1
|
|
Неактивный пользователь
Пол:
Регистрация: 08.01.2008
Сообщений: 14
Репутация: 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
|
|
|
|
| Реклама: | взять в аренду шатер | шоу в москве в марте - RedKassa.ru | Магазин бытовой техники: купить стиральную машинку недорого - переходи на сайт ТАЙМТВ! | sem62.1 | Фиброцементные плиты - фибробетон облицовка - у нас на fibro-cement.ru |
|
|
#2
|
|
Постоялец
![]() ![]() Пол:
Регистрация: 13.03.2008
Адрес: Минск
Сообщений: 257
Репутация: 231
|
Может третье поле сделать вычисляемым? COMPUTED BY?
__________________
|
|
|
|
|
|
#3
|
|
Типы приводить не пробовали?
|
|
|
|
|
|
|
#4
|
|
Неактивный пользователь
Пол:
Регистрация: 08.01.2008
Сообщений: 14
Репутация: 0
|
to Vasuha
К сожалению все поля заполнены данными. COMPUTED BY не подойдет. Приведение к типу не пробовал, но думаю не прокатит по той же причине. P.S. Вставьте код... если это возможно. |
|
|
|
|
|
#5
|
|
Пользователь
Пол:
Регистрация: 11.03.2008
Сообщений: 158
Репутация: 33
|
>К сожалению все поля заполнены данными. COMPUTED BY не подойдет.
Поясни плиз... |
|
|
|
|
|
#6
|
|
Новичок
![]() Пол:
Регистрация: 03.03.2009
Сообщений: 16
Репутация: 1
|
и правильно делает, что не хочет считать!
![]() Код:
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 Код:
begin NEW.5VSUM = NEW.5PRM + NEW.5PRM2; end |
|
|
|
![]() |
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| FIBPlus (работа с Firebird) | AlexanderP | Компоненты | 143 | 20.12.2022 09:35 |
| БД Firebird | Greg777 | Delphi | 61 | 26.03.2015 00:01 |
| Обновление FireBird | biksant | Базы данных | 15 | 13.04.2010 06:56 |
| Помогите пожалуйста с Firebird | vng23 | Базы данных | 3 | 17.02.2010 06:51 |
| FireBird 2.0.3 | Mustd1e | Базы данных | 5 | 10.01.2010 23:02 |
|
|