CREATE TABLE STORE(
        ID CHAR(3),
AMOUNT NUMBER(3),
PRICE NUMBER(4,2),
SUMPRICE NUMBER(6,2)
);如何写一个触发器实现添加了ID,AMOUNT 和 PRICE后
自动计算SUMPRICE = AMOUNT * PRICE?我写了这个似乎没用
CREATE OR REPLACE TRIGGER T 
AFTER INSERT ON STORE
FOR EACH ROW
BEGIN
    UPDATE STORE STO
           SET STO.SUMPRICE = :NEW.AMOUNT * :NEW.PRICE
           WHERE STO.ID = :NEW.ID;
END;

解决方案 »

  1.   

    CREATE OR REPLACE TRIGGER T 
    BEFORE INSERT ON STORE 
    FOR EACH ROW 
    BEGIN 
    SELECT AMOUNT * PRICE INTO :NEW.SUMPRICE FROM DUAL;
    END;
      

  2.   

    这样才对:
    create or replace trigger t
    before insert on store
    for each row
    begin
    :new.sumprice:=:new.amount*:new.price;
    end;
    /
      

  3.   

    SQL> CREATE TABLE STORE(
      2          ID CHAR(3),
      3  AMOUNT NUMBER(3),
      4  PRICE NUMBER(4,2),
      5  SUMPRICE NUMBER(6,2)
      6  );Table created.SQL> CREATE OR REPLACE TRIGGER T
      2  BEFORE INSERT ON STORE
      3  FOR EACH ROW
      4  BEGIN
      5  SELECT :new.AMOUNT * :new.PRICE INTO :NEW.SUMPRICE FROM DUAL;
      6  END;
      7  /Trigger created.SQL> insert into store(id,amount,price) values('1',10,20);1 row created.SQL> select * from store;ID      AMOUNT      PRICE   SUMPRICE
    --- ---------- ---------- ----------
    1           10         20        200SQL>
      

  4.   

    amount 和price也要加上:new.前缀