Создание триггера для вычисления суммы в interbase
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 ; !!
Конечно же это не работает... Прошу Вас помочь мне в написании этого вычисляемого поля с помошью триггера или чего-то может другого. Прошу вылаживать код...
....
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);
....
В накладной может быть несколько строк спецификации.