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
можно взять только одну запись.
Ура!!