当null自定义单词时,Oracle触发?

时间:2014-07-30 06:34:42

标签: c# oracle triggers

CREATE OR REPLACE TRIGGER auto_id
before insert on CustomWord
for each row
declare
    max_id number;
    cur_seq number;
begin
    if :new.table_id1, :new.table_id2,  :new.table_id3,  :new.table_id4 is null then
--HERE what should I get it?  Something  like tableid1 value = "it's ok"

        end loop;
    end if;
end;
/

我只想在用户在“table_id1”上获取空值时创建触发器,它的值自动更改,只插入“它没问题”。如何创建这样的?

2 个答案:

答案 0 :(得分:1)

如果你真的想通过触发器(无论出于何种原因)来做,那就简单了:

CREATE OR REPLACE TRIGGER auto_id
before insert on CustomWord
for each row
begin
    if :new.table_id1 is null then
      :new.table_id1 := 'it''s ok';
    end if;
end;
/

答案 1 :(得分:0)

另一种方法是在列上使用默认值:

create table CustomWord 
...   
 table_id1 varchar2(30) default 'Ok',
...

而不是触发器。请注意,除非您具有可以使用DEFAULT ON NULL子句的Oracle 12c,否则需要在NULL时省略INSERT语句中的列。

使用默认的null子句:

create table CustomWord 
...   
 table_id1 varchar2(30) default on null 'Ok',

修改现有表格:

ALTER TABLE CustomWord MODIFY(table_id1 DEFAULT on null 'It''s ok');

但是,我建议不要插入“It is ok”字符串,因为最好将NULL值保持为可以接受的证据。应该根据值为空的事实做出人类可读的表示。