У меня есть следующий триггер
CREATE OR REPLACE TRIGGER MODIFY_EMP_DESC
BEFORE INSERT ON EMP
FOR EACH ROW
BEGIN
SELECT 'MR. ' :NEW.NAME || ', Age: ' || :NEW.AGE || '. '|| :NEW.DESC || INTO :NEW.DESC FROM DUAL;
END;
/
По сути, этот триггер срабатывает, когда новая запись добавляется в таблицу EMP
, и устанавливает исходную EMP.DESCRIPTION
этой новой записи такжесодержит информацию об имени и возрасте 'MR. {NAME}, Age {AGE}. {DESC}'
.Теперь я хочу проверить, является ли NAME или AGE NULL.Если один из них есть, то я не даю триггеру форматировать столбец DESC.Это то, что я пытался
CREATE OR REPLACE TRIGGER MODIFY_EMP_DESC
BEFORE INSERT ON EMP
FOR EACH ROW
BEGIN
SELECT 'MR. ' :NEW.NAME || ', Age: ' || :NEW.AGE || '. '|| :NEW.DESC || INTO :NEW.DESC FROM DUAL
WHERE :NEW.NAME IS NOT NULL
AND :NEW.AGE IS NOT NULL
END;
/
Но когда я проверял мой триггер
INSERT INTO EMP (ID, DESC) VALUES (123, 'ACCOUNTANT.');
, он просто показал мне ошибку:
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at "MIKE.MODIFY_EMP_DESC", line 2
ORA-04088: error during execution of trigger 'MIKE.MODIFY_EMP_DESC'
Есть ликаким образом я могу достичь этого?Я думал об использовании операторов IF, но не смог найти ничего полезного.