【问题标题】:Oracle - Error: 'ORA-01400: cannot insert NULL intoOracle - 错误:'ORA-01400:无法将 NULL 插入
【发布时间】:2013-02-21 05:50:16
【问题描述】:

我正在尝试向表中插入一条记录,但出现错误 -

'ORA-01400: cannot insert NULL into (....'。表结构为:

我从 Mysql 迁移到 Oracle。

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

【问题讨论】:

  • MySQL 允许您将 null 插入非 null 列(并静默地将其转换为其他内容)。 Oracle 实际上遵守您不想在该列中存储 NULL 的约束。解决方案是在插入时提供一个值而不是 NULL。
  • 在某些列上存在 NOT NULL 约束,因此您需要在插入期间提供一个值,或者可能缺少触发器(例如,它可以从序列中填充列)
  • 好的。如何在 Oracle 所有表上删除“非空”选项?
  • 您可以使用 all_tab_cols 中的数据编写脚本,将列更改为可为空,但您确定要这样做吗?为什么不使用NVL
  • @a_horse_with_no_name,它是否允许您始终插入空值,或者它只是像 here 这样处理空字符串的方式,这与 oracle here 不同

标签: mysql oracle migration notnull ora-01400


【解决方案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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-01
    • 2018-11-08
    • 2020-07-26
    • 1970-01-01
    • 2011-08-23
    • 2016-08-21
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多