我有两个表,其输出如下:
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
如果更新/删除了作业表中项目的最后一个人(因此projcode没有为其分配人员),我想将其从项目表中删除。我想将它输出到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;
我做错了什么?
答案 0 :(得分:0)
触发器无法从触发的表格中进行选择。否则你会得到ORA-04091:表XXXX正在变异,触发/功能可能看不到它。尽量不要在触发器中加入过多的逻辑。