【发布时间】:2012-07-27 13:21:22
【问题描述】:
我们最近从 Oracle 9.2 版迁移到了 11g。 但是使用数据库的应用程序出现了一些错误。我们得到以下异常:
ORA-01400: cannot insert null into...
我查找了有关该错误的信息,尤其是有关 11g 版本中的一些新功能的信息。
我来了。我知道用默认值定义表列的旧方法行不通,但我不知道为什么,更重要的是如何解决这个问题。
这是我可以使用 SQL Developer 看到的表的定义:
COLUMN_NAME DATA_TYPE NULLABLE DATA_DEFAULT COLUMN_ID
--------------------------------------------------------------------------
...
REP_DOC_RECEIVED CHAR(1 BYTE) No 'n' 12
...
当我尝试为该列插入具有空值的行时,会引发异常。
【问题讨论】:
-
该列显示可空:不,这可能是您不能在该列中插入空值的原因...默认值不是自动的,您仍然需要填充该值。什么也没有变。在该列中添加触发器或不指定该列。
-
@Ben:我不这么认为:默认值不是自动的,您仍然需要填充该值。,实际上是相反的,请参阅我的回答。
-
@gwu,也许措辞不佳......
标签: oracle11g default-value oracle9i