ORA-01422: 精确提取 returns 多于请求的行数)显示触发器

ORA-01422: exact fetch returns more than requested number of rows )shows for a trigger

我已经厌倦了创建这样的触发器, 但它显示此错误

此错误表明您的查询 SELECT DNAME INTO DeptName ... returns 不止一条记录,因此无法将其结果分配给标量变量。您的查询的问题是您在 purchase 上有一个不必要的 JOIN,因此它 returns 为刚刚完成当前销售的员工执行的每笔销售创建一条记录。

我相信您的查询可以简化如下:

SELECT d.dname INTO DeptName
FROM emp e
INNER JOIN dept d ON e.deptno = d.deptno
WHERE e.empno = :NEW.servedby;