Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Создание триггера для вычисления суммы в interbase

70K
07 мая 2011 года
denndota
1 / / 07.05.2011
Есть 2 таблицы:

CREATE TABLE NAKLADNAYA
(
NAKL_ID Integer,
DATA_NAKL Date,
SUMA_NAKL decimal(7,2),
PRIMARY KEY (NAKL_ID),
);


CREATE TABLE TOVARY_IN_NAKL
(
NAKL_KOD Integer,
TOV_KOD Integer,
KOLICHESTVO Integer,
PRICE decimal(7,2),
FOREIGN KEY (NAKL_KOD) REFERENCES NAKLADNAYA (NAKL_ID),
FOREIGN KEY (TOV_KOD) REFERENCES TOVAR (TOV_ID)
);

Нужно сделать так, чтобы в таблице NAKLADNAYA в поле SUMA_NAKL было установленно значение, которое бы являлось произвидением полей из таблицы TOVARY_IN_NAKL, а именно KOLICHESTVO*PRICE и сгрупировано по полю NAKL_KOD. Или простым языком чтобы SUMA_NAKL равнялась сумме стоимостей всех товаров входящих в отдельную накладную.
Препод посоветовал использовать триггер. После длительных поисков по просторам РуНета, ничего стоящего, что могло мне помочь, не нашел..(
Написал, что-то очень карявое, похожее на триггер:

SET TERM !! ;
CREATE TRIGGER "Vfhh" for TOVARY_IN_NAKL
ACTIVE AFTER INSERT POSITION 0
AS

BEGIN
UPDATE NAKLADNAYA
SET SUMA_NAKL = (SELECT (KOLICHESTVO*PRICE) FROM TOVARY_IN_NAKL GROUP BY TOV_KOD)
WHERE NAKL_ID = NAKL_KOD;

END !!
SET TERM ; !!

Конечно же это не работает... Прошу Вас помочь мне в написании этого вычисляемого поля с помошью триггера или чего-то может другого. Прошу вылаживать код...
72K
03 июня 2011 года
OraSys
1 / / 02.06.2011
В синтаксисе Интербейса я не силен, но в принципе SQL строка для вычисления должна быть такой:
....
SET SUMA_NAKL = (SELECT SUM(T.KOLICHESTVO*T.PRICE) FROM TOVARY_IN_NAKL T GROUP BY T.TOV_KOD WHERE T.NAKL_KOD = NAKL_ID);
....
В накладной может быть несколько строк спецификации.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог