Вы пытаетесь обновить ту же строку, которую только что вставили?В этом случае вы хотите сделать этот триггер BEFORE INSERT
и изменить :NEW.fieldid
до того, как он будет вставлен в таблицу.Примерно так:
create or replace TRIGGER "BLT_TRIGGER"
BEFORE INSERT ON BLT_MAPPING
FOR EACH ROW
l_new_fieldid number; -- Or whatever the correct datatype is
BEGIN
SELECT CASE WHEN CORR_TI = 'B' THEN '12345' ELSE '54321' END
INTO l_new_fieldid
FROM BROKER CO,LOAN LO
WHERE LO.CORR_ID = CO.CORR_ID
AND LO.LOAN_ID = :NEW.loanid;
:NEW.fieldid := l_new_fieldid;
END;
Но это худшее решение.Триггеры затеняют то, что вы пытаетесь действительно сделать, и их трудно отлаживать, когда есть проблема.Лучшее решение - исправить ваше заявление INSERT
тем, что вы действительно пытаетесь сделать.