我需要更改“产品”表以具有varchar2(3)重新订购列,并修改注释中的语句级别触发器,以将手头上的数量少于产品最小数量的两倍或将产品重新订购字段设置为"is"。现有数量小于10。否则,该值应为“no”。插入或更新p_min或p_qoh之后将触发触发器。通过事先检查数据,进行更改,然后再检查进行调试。

为此,我有

CREATE or REPLACE TRIGGER
  TRG_Product_Reorder
  AFTER INSERT OR UPDATE of P_min, P_qoh ON lab9_Product
BEGIN
  UPDATE lab9_Product SET REORDER = 'yes'
   WHERE P_qoh < P_min*2 or p_qoh < 10;

  UPDATE lab9_Product SET REORDER = 'no'
   WHERE P_qoh >= p_min*2;
END;
/

我得到错误:
SQL statement ignored
"REORDER": invalid identifier

最佳答案

我认为您可能需要一个前触发器而不是一个后触发器。就像这样:

CREATE or REPLACE TRIGGER
TRG_Product_Reorder
BEFORE INSERT OR UPDATE of P_min, P_qoh ON
lab9_Product
BEGIN
    IF :OLD.P_qoh < :OLD.P_min*2 AND :OLD.p_qoh < 10 THEN
       :NEW.REORDER := 'yes';
    ELSE  :NEW.REORDER := 'no';
    END IF;
END;

关于sql - 创建触发器以对列重新排序并修改语句级别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33600650/

10-10 02:43