簡體   English   中英

PL / SQL觸發器更新或刪除

[英]PL/SQL Trigger Update or Delete

我有兩個表,它們的輸出看起來像:

Project Table
CODE         NAME                           
------------ -------------- 
101          Alpha                       
222          Beta                       
355          Gamma                       
973          Delta                   

Assignment Table
ID    NAME         PROJCODE       HOURS              
----- ------------ -------------- ------------ 
55055 Smith        101            20                     
55055 Smith        222            10                     
39002 Hammond      973            25                     
00001 Preston      355            5                      
10000 Logan        355            5                      
00777 Bond         222            20                        

如果工作分配表中項目的最后一個人被更新/刪除(因此項目代碼中沒有人分配),我想將其從項目表中刪除。 我想將其輸出到DBMS_OUTPUT。 我編寫了以下觸發器,但是每次嘗試測試觸發器時都會出錯。

CREATE OR REPLACE TRIGGER project_removal_trigger AFTER
  DELETE OR
  UPDATE ON ASSIGNMENT FOR EACH ROW DECLARE PRINT project.code%type;
  BEGIN
    DELETE
    FROM PROJECT
    WHERE code NOT IN
      (SELECT Projcode FROM assignment GROUP BY projcode HAVING COUNT(name) > 0
      );
  END;

我究竟做錯了什么?

觸發器無法從為其觸發的表中選擇。 否則,您會收到ORA-04091:表XXXX正在突變,觸發器/函數可能看不到它。 盡量不要在觸發器中添加過多的邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM