Может ли перед вставкой триггер передать нулевое значение в Oracle

У меня есть триггер перед вставкой, и я пытаюсь определить его для вставки значений и нулевых значений, когда это необходимо.

Я пытаюсь что-то вроде этого

CREATE OR REPLACE TRIGGER  InsertPrezimeRuk
BEFORE INSERT ON RADNICI
FOR EACH ROW
DECLARE
I_novo_pr varchar2(50);
BEGIN
 SELECT prezime INTO I_novo_pr 
   FROM RADNICI
   WHERE jmbg= :new.ruk_jmbg;
   :new.prezime_rukovodioca:= I_novo_pr;
END;

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

Но я хочу установить это, когда данные не обнаружены, чтобы просто передать нулевое значение в таблицу. И я пробовал что-то вроде этого

CREATE OR REPLACE TRIGGER  InsertPrezimeRuk
BEFORE INSERT ON RADNICI
FOR EACH ROW
DECLARE
I_novo_pr varchar2(50);
BEGIN
IF I_novo_pr is null
THEN :new.prezime_rukovodioca:= null;
END IF; 
 SELECT prezime INTO I_novo_pr 
   FROM RADNICI
   WHERE jmbg= :new.ruk_jmbg;
   :new.prezime_rukovodioca:= I_novo_pr;
END;

Но это все еще не работает.

Это вообще возможно? Если это так, пожалуйста, помогите.


person Благоје Вуковит&    schedule 26.09.2017    source источник
comment
I_novo_pr всегда равен нулю во втором триггере.   -  person OldProgrammer    schedule 26.09.2017
comment
2-й триггер не работает. Я пробовал так, дело в том, что I_novo_pr иногда может содержать нулевые значения, и я хочу, чтобы он передал эти нулевые значения в таблицу, а не выдавал ошибку, что данные не найдены.   -  person Благоје Вуковит&    schedule 26.09.2017
comment
Похоже, вам просто нужен блок исключений в вашем первом триггере для обработки ошибок no_data_found. Из любопытства, является ли jmbg уникальным столбцом? Если нет, то что произойдет, если ваш запрос вернет более одной строки? Вы также должны учитывать ошибку too_many_rows.   -  person Boneist    schedule 26.09.2017
comment
Да, jmbg является первичным ключом в таблице RADNICI, но столбец ruk_jmbg иногда может иметь нулевое значение. Проблема в том, что я не знаю, как установить этот блок исключений   -  person Благоје Вуковит&    schedule 26.09.2017


Ответы (1)


person    schedule
comment
Большое спасибо, это работает идеально! Я просто не сталкивался с этим исключением, когда действие no_data_found до сих пор - person Благоје Вуковит&; 26.09.2017