我需要創建一個觸發器,當從該emp表中刪除該部門的最後一名員工時,該部門將從部門表中刪除。
EMP(EMPNO,ENAME,DEPTNO)
部門(DEPTNO,DNAME)PLSQL_trigger不能編輯
首先,我創建的刪除從給定的deptno dept表的部門的過程。
CREATE OR REPLACE PROCEDURE del_dept
(v_dno in number)
is
begin
delete from DEPT where deptno = v_dno;
end;
然後,我創建時在該部門的最後EMP被刪除的刪除部門的觸發器。我試圖通過刪除deptno10中的三個emp中的一個來測試觸發器,但是我得到了來自命令的錯誤mesg,該觸發器無效且重新驗證失敗。
create or replace trigger del_dept
after delete on EMP
for each row
DECLARE
emp_count Number;
g_dno Number;
begin
SELECT COUNT(:old.ename) INTO emp_count FROM emp group by deptno;
FOR i IN 1.. emp_count LOOP
IF i = emp_count THEN
del_dept(g_dno);
end if;
END LOOP;
End;
嗨,這是不是觸發刪除它好辦法,這樣做在窗體或應用程序,它確實在**從EMP表中刪除**刪除完成後 – hmmftg
權是什麼這需要'FOR'循環嗎?當你調用'del_dept'時,'g_dno'的值是多少? – Nitish
我的FOR循環的原因是檢查該部門中的每個emp。如果不是最後一個emp,只需刪除emp而不是該部門。我想我不需要觸發器來檢查這種情況。 g_dno的值是:old.deptno。我迷惑IN參數與OUT參數。在調用過程/函數時,我需要提供IN參數的值。在這裏,g_dno是一個IN參數。因此,我需要在調用例程中提供該值:old.deptno。 – user7770852