ORA-01422: точная выборка возвращает больше, чем запрошенное количество строк для триггера

Я попытался вставить новые строки, чтобы проверить, работает ли мой триггер. Но возвращает ошибку в заголовке

2 ответа

Одна из ваших серьезных проблем заключается в том, что ваши объединения написаны неправильно. Я не знаю, что вы пытаетесь сделать, но часть вашего запроса, которая читает

INNER JOIN PURCHASE
  ON :NEW.SERVEDBY = P.EMPNO

присоединится к каждой строке изPURCHASE стол к P подзапрос, если:NEW.SERVEDBY совпадает со значением EMPNO в любой строке, возвращаемой Pподзапрос. Фактически он может присоединяться к каждой строке изPURCHASE несколько раз, если условия :NEW.SERVEDBY = P.EMPNOсовпадает несколько раз. Я подозреваю, что это не то, что вы хотели, но поскольку я не знаю, как выглядят ваши таблицы или чего вы пытаетесь достичь, я не могу предложить какой-либо подход.

Следующий запрос возвращает более одной записи.

SELECT DNAME INTO DeptName FROM (SELECT * FROM DEPT INNER JOIN EMP ON 
 DEPT.DEPTNO = EMP.DEPTNO) P INNER JOIN PURCHASE ON :NEW.SERVEDBY = 
 P.EMPNO; 
-- use fetch first 1 row only or row_number analytical function or rownum pseudo column

Вам нужно ограничить его 1 записью как INTO можно взять только одну запись.

Ура!!

Другие вопросы по тегам