2013-03-06 138 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;