我想创建触发器,但我不知道该怎么做。下面是示例

时间:2018-12-02 19:13:01

标签: sql oracle database-trigger

我想创建触发器,但是我不知道该怎么做。下面是示例:

CREATE OR REPLACE TRIGGER checkDuration
   after UPDATE on comm_shipping
   FOR EACH ROW
DECLARE
   quantity NUMBER;
BEGIN
   SELECT * FROM comm_orders c
      WHERE C.ORDER_ID = :new.order_id 
      AND c.quantity = 1;
   IF quantity=NULL THEN
      RAISE_APPLICATION_ERROR('no more items');
   END IF;
EXCEPTION
   WHEN NO_DATA_FOUND THEN
      NULL;
END;

1 个答案:

答案 0 :(得分:1)

尝试以下操作(由于Oracle,我想您的DBMS是DB2RAISE_APPLICATION_ERROR):

CREATE OR REPLACE TRIGGER checkDuration
AFTER UPDATE ON comm_shipping
FOR EACH ROW
DECLARE
   quantity NUMBER;
BEGIN
   SELECT c.quantity
     INTO quantity   -- this part is missing
     FROM comm_orders c
    WHERE c.order_id = :new.order_id;

    IF quantity is NULL THEN 
       RAISE_APPLICATION_ERROR(-20001,'no more items'); -- you need a code 
                                                        -- between -20000 and -20999
    END IF;
   EXCEPTION WHEN NO_DATA_FOUND THEN NULL;
END;