Триггер PLSQL для вызова ошибки приложения не работает - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь создать триггер, который вызывает ошибку, если общее количество строк превышает 10. Код plsql был успешно скомпилирован, но он не генерирует никаких ошибок. Это код plsql:

SQL> CREATE OR REPLACE TRIGGER customer_count_check
  2  BEFORE INSERT OR UPDATE ON customer2
  3  FOR EACH ROW
  4  DECLARE
  5  count_customer NUMBER;
  6  max_customer NUMBER := 10;
  7  BEGIN
  8  SELECT COUNT(*) INTO count_customer FROM customer2 WHERE cusid = :new.cusid;
  9  IF count_customer >= max_customer THEN
 10  RAISE_APPLICATION_ERROR (-20000,'Customer Table capacity exceeded');
 11  END IF;
 12  END;
 13  /

1 Ответ

2 голосов
/ 23 апреля 2019

я бы сказал, что ваш триггер работает не так, как вы ожидаете, потому что ваш оператор select внутри всегда возвращает одну строку.

вы фильтруете по первичному ключу!

, который должен работать

SQL> CREATE OR REPLACE TRIGGER customer_count_check
  2  BEFORE INSERT OR UPDATE ON customer2
  3  FOR EACH ROW
  4  DECLARE
  5  count_customer NUMBER;
  6  max_customer NUMBER := 10;
  7  BEGIN
  8  SELECT COUNT(*) INTO count_customer FROM customer2; --WHERE cusid = :new.cusid;
  9  IF count_customer >= max_customer THEN
 10  RAISE_APPLICATION_ERROR (-20000,'Customer Table capacity exceeded');
 11  END IF;
 12  END;
 13  /
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...