Вы, вероятно, хотели бы что-то похожее на это (посмотрите на ссылку на вставленное значение - :NEW.CustromerID
- это то, что вы забыли в своем триггере):
CREATE OR REPLACE TRIGGER Unpaid_Balance
BEFORE INSERT ON Charter
FOR EACH ROW
DECLARE
V_Unpaid DECIMAL;
BEGIN
SELECT Customer_Balance
INTO V_Unpaid
FROM Customer
WHERE CUSTOMER.CustomerID = :NEW.CustomerID
;
--
IF V_Unpaid> 400 THEN
Raise_application_error(-20003, 'Customer has an unpaid balance of more than $400');
end if;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
END;
/
Но я настоятельно рекомендую вам не включать бизнес-логику в триггеры. Сделайте это в вашем приложении. Управлять потоком с помощью триггеров очень сложно, потому что все делается автоматически ...