我遇到了一个我想要创建的触发器的问题。如果D_EMP_ID条目(对于每个个人ID)超过9,我希望触发器显示错误消息。换句话说,ID为' 1000'最多只能有9个条目。如果为' 1000'添加了第十个条目它应该显示错误。
但目前它并没有显示错误。每当我添加一个新条目时,它都会被添加。即使它是第十,十一,十二等。
以下是触发器的代码:
CREATE OR REPLACE TRIGGER tri_order_line_count
BEFORE INSERT OR UPDATE ON pl_work_allocation FOR EACH ROW
DECLARE
order_count INTEGER;
BEGIN
SELECT COUNT(*) INTO order_count
FROM pl_work_allocation WHERE d_emp_id = :new.d_emp_id;
IF (order_count > 9) THEN
raise_application_error(-20001, 'Too many roles for ' || :new.d_emp_id || '');
END IF;
END;
以下是PL_WORK_ALLOCATION表的布局:
S_REPORTED_CRIME_ID- D_EMP_ID- WORK_DESC- LEAD_POLICE_OFFICER- WORK_START_DATE- WORK_END_DATE-
12 1000 example 1001 08/26/2011 09/27/2012
15 1010 test 1001 08/26/2011 09/27/2012
1 1000 Investigation 1003 08/26/2011 08/26/2012
答案 0 :(得分:-1)
我认为你应该在提出错误后添加回滚
if (order_count > 9)
then raise_application_error(-20001,
'Too many roles for '|| :new.D_EMP_ID ||'' );
ROLLBACK;
end if;