如果在Oracle SQL中插入null,则设置一个值

use*_*659 1 sql oracle null triggers insert

我创建了一个触发器,它会自动将第一列值设置为后续的阶乘数.但是,另外,如果插入空值,我想将第二列的值设置为第一列的值增加5.这是我现在尝试的:

create or replace trigger test_tr
before insert on myT
for each row 
begin

IF :new.mNumb is null 
THEN       
    UPDATE myT
    SET mNumb = :new.tab_id + 5;
END IF;


SELECT fac(test_seq.NEXTVAL)
INTO   :new.tab_id
FROM   dual;


end;
Run Code Online (Sandbox Code Playgroud)

但显然我错过了一些东西,因为没有任何反应,插入的null仍然是空的.

Emm*_*uel 8

不要在触发器中重新更新表,更新您直接给出的行:

...

IF :new.mNumb is null 
THEN       
    :new.mNumb = :new.tab_id + 5;
END IF;

...
Run Code Online (Sandbox Code Playgroud)