2013-03-06 135 views
2

我试图插入一条记录到表中,但得到的错误 -甲骨文 - 错误:ORA-01400:无法将NULL插入

'ORA-01400: cannot insert NULL into (....'. The table structure is:

我从MySQL迁移到Oracle。

在Mysql上有效,但在Oracle上它不起作用。我怎样才能解决这个问题?我是否需要写的所有列插入查询或取消选择不为空选项

+2

的MySQL可以让你插入空到非空列(默默转换是别的东西)。实际上,Oracle遵守您不希望在该列中存储NULL的约束。解决方案是在插入时提供一个值而不是NULL。 – 2013-03-06 12:28:02

+1

对某些列存在NOT NULL约束,因此您需要在插入过程中提供一个值,或者可能缺少一个触发器(例如,可以从序列填充列) – tbone 2013-03-06 12:28:37

+0

好的。我如何在Oracle所有表上放置'not null'选项? – neoerol 2013-03-06 12:34:07

回答

1

试试这个:

create or replace trigger EDITIONS_COR 
    before insert or update on EDITIONS 
    for each row 
begin 
    if INSERTING then 
    select EDITIONS_SEQ.nextval into :new.ID from DUAL; 
    end if; 
    :new.CORDATE:=SYSDATE; 
    :new.USERNAME:=USER; 
end;