【发布时间】:2019-04-23 09:34:39
【问题描述】:
我正在尝试创建一个触发器,如果总行数超过 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 /
【问题讨论】:
-
为我工作:dbfiddle.uk/… 你能提供一个小提琴来说明它是如何不起作用的吗?
-
嘿@sticky bit 是否有任何限制我们必须在空表中创建这种类型的触发器?
-
对我来说似乎也很好。尝试用简单的
DBMS_OUTPUT.put_line替换RAISE_APPLICATION_ERROR,看看你的SELECT是否工作正常? -
@Ajax:没有。但是看看 hotfix 的回答,这似乎很合理。