Я хочу создать триггер, но я не знаю, как это сделать.Ниже образец - PullRequest
0 голосов
/ 02 декабря 2018

Я хочу создать триггер, но я не знаю, как это сделать.Ниже приведен образец:

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 голосов
/ 02 декабря 2018

Попробуйте следующее (я полагаю, ваша СУБД Oracle или DB2 из-за RAISE_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;
...