CREATE OR REPLACE TRIGGER ITEM_ORDER_SHIPPED
BEFORE INSERT OR UPDATE OR DELETE ON ITEM
FOR EACH ROW
DECLARE
x number;
BEGIN
    SELECT COUNT(SHIPDATE) INTO x FROM ord o
    WHERE o.ordid=:new.ordid;
    IF x>0 THEN
        raise_application_error(-20002, 'Tabelle ITEM: Auftrag kann
        nicht mehr geaendert werden, weil Artikel schon ausgeliefert.');
    END IF;
END;
/

CREATE OR REPLACE TRIGGER ORD_ORDER_SHIPPED
BEFORE UPDATE OR DELETE ON ORD
FOR EACH ROW
WHEN (old.shipdate IS NOT NULL)
DECLARE
BEGIN
    raise_application_error(-20003, 'Tabelle ORD: Auftrag kann nicht mehr
    geaendert werden, weil Artikel schon ausgeliefert.');
END;
/                             
