有两张表t_order,t_product.
t_order    
    ORD_ID                         NUMBER(9,0) NOT NULL,
    PDT_ID                         VARCHAR2(7),
    CLT_ID                         NUMBER(9,0),
    ORD_DATE                       DATE,
    ORD_COUNT                      NUMBER(9,0),
    IS_SHIPPED                     NUMBER(1,0) DEFAULT 0,
    CONSTRAINT PK_T_ORDER PRIMARY KEY (ORD_ID)
t_product 
    PDT_ID                         VARCHAR2(7) NOT NULL,
    PDT_NAME                       VARCHAR2(50),
    PDT_PDATE                      DATE,
    COM_ID                         NUMBER(9,0),
    PDT_STOCK                      NUMBER(9,0),
    CONSTRAINT PK_T_PRODUCT PRIMARY KEY (PDT_ID)
我现在想写一个触发器, 在 对表 t_order 作insert, update 操作时,判断 t_product表中的字段pdt_stock ,看它(t_product) 的 value 是不是>0 如果  如果<0 就提示“货存不足”!
另外,如果我的数据库的PDT_STOCK 采用的是,到0了在给它更新值,也就是我的实际货存=(PDT_STOCK(固定值)-买出去的(SUM(ORD_COUNT)),如何实现

解决方案 »

  1.   

    1
    create or replace trigger triname
    before insert or update on table 
    for each row
    begin
    if t_product.pdt_stock < 0 then 
    dbms_output.put_line('货存不足');
    end if;
    end;2
    不太懂,是这样吗?实际货存=
    select pdt_stock - sum(ord_count)
    from t_product, t_order
    group by pdt_id
      

  2.   

    好像不行,if ....   end if  段有错,是不是不能用if 的阿?
      

  3.   

    主要是想实现update t_product 希望能在数据库里及时更新pdt_stock这个字段的值,可是我写的这个好像不行啊!老报错
    create or replace trigger t_order_trigger
         before update or insert
              on t_order
                 for each row
                 begin
       update  t_product set pdt_stock = (select stock from (select pdt_id, (t_product.pdt_stock-sum(t_order.ord_count))stock from t_product, t_order where t_product.pdt_id = t_order.pdt_id group by t_order.pdt_id));
                     
                          update t_product set pdt_stock = 0;
                          dbms_output.put_line('the stock is : '+pdt_stock);
                     end;
      

  4.   

    before update or insert 是两种情况。update  t_product set pdt_stock 只适合一种情况,insert(***);要用
    when inserting then 
    --do insert
    when updating then
    --do update
    end