Preciso de vossa ajuda em resolver este problema tentei do meio jeito mais não esta dando certo, tenho duas tabela a qual tenho de realizar esta actividade e crie um trigger
chamado trg_line_total
para gravar o valor de line_total
na tabela LINE sempre que for addicionada uma nova linha em LINE.
O valor de LINE_TOTAL
é o produto dos valores de LINE_UNITS
(Unidade do produdo da linha) e LINE_PRICE
(Preço do produto da linha)
create table INVOICE(
INV_NUMBER number primary key,
INV_DATE date default sysdate not null,
INV_SUBTOTAL NUMBER(9,2)DEFAULT 0.00,
INV_TAX NUMBER(9,2)DEFAULT 0.00,
INV_TOTAL NUMBER(9,2)DEFAULT 0.00,
constraint INV_CK1 check(INV_DATE>to_Date('01-JAN-2008','DD-MON-YYYY')));
create table LINE(
INV_NUMBER number not null,
LINE_NUMBER number not null,
LINE_UNITS Number default 0 not null,
LINE_PRICE number(9,2) default 0.00 not null,
LINE_TOTALE number(9,2) default 0.00 not null,
primary key(INV_NUMBER,LINE_NUMBER),
foreign key(INV_NUMBER)references INVOICE on delete cascade);
CREATE OR REPLACE TRIGGER trg_line_total
AFTER INSERT ON LINE
FOR EACH ROW
DECLARE
TOTAL LINE.LINE_TOTALE%TYPE;
CODIGO LINE.INV_NUMBER%TYPE;
BEGIN
SELECT INV_NUMBER INTO CODIGO FROM INVOICE WHERE INV_NUMBER=:NEW.INV_NUMBER;
TOTAL:=:NEW.LINE_UNITS*:NEW.LINE_PRICE;
UPDATE LINE set LINE_TOTALE=LINE_TOTALE+TOTAL
WHERE INV_NUMBER=CODIGO;
END;