我在Oracle数据库中找到了一个触发器
create or replace trigger pii_user_activation_trigger
before insert on pii_user_activation
for each row
begin
select seq_pii_user_activation.nextval
into :new.id
from dual;
end;
我不希望触发器在每次插入行时自动生成id
。如果id
语句没有提供值,我该如何修改触发器以便它只生成新的INSERT
?
答案 0 :(得分:4)
create or replace trigger pii_user_activation_trigger
before insert on pii_user_activation<
for each row
begin
IF :new.id IS NULL THEN
select seq_pii_user_activation.nextval
into :new.id
from dual;
END IF;
end;
答案 1 :(得分:3)
听起来你只是想要
create or replace trigger pii_user_activation_trigger
before insert on pii_user_activation
for each row
begin
IF( :new.id IS NULL )
THEN
select seq_pii_user_activation.nextval
into :new.id
from dual;
END IF;
end;
这使得通常合理的假设是没有为列指定非NULL默认值。
答案 2 :(得分:1)
另一种方法:
create or replace trigger pii_user_activation_trigger
before insert on pii_user_activation
for each row
WHEN (NEW.id IS NULL)
begin
select seq_pii_user_activation.nextval
into :new.id
from dual;
end;
(请注意,在WHEN子句中,您未在:
之前添加NEW
。