Oracle Database 23 c免费版- VirtualBox Appliance for Developers
使用Apex对象浏览器创建了两个表。第一个表-table 1(id,name)。我从预先准备好的集合中插入行到一个表中。
在此之后,如果我尝试通过Apex对象浏览器插入一行,则会得到ORA-01400: cannot insert NULL into table1.id.
我决定我的顺序错了,于是运行了这个命令
ALTER TABLE table1 MODIFY id GENERATED BY DEFAULT AS IDENTITY (START WITH LIMIT VALUE);
字符串
但这并没有解决问题。我得到了ORA-01400: cannot insert NULL into table1.id.
我用INSERT INTO table1 (name) VALUES ('test')
命令插入了一行。该行已被添加,ID具有正确的值(如下)。
如果我尝试通过 Apex Object Browser 插入一行,我又得到ORA-01400: cannot insert NULL into table1.id.
在第二个表中,我可以通过Apex对象浏览器插入一行,没有任何问题。
我该怎么做才能解决这个问题?
2条答案
按热度按时间vsdwdz231#
在标识列定义中使用“on null”子句
第一个月
你会发现APEX正在构造一个以null作为值的insert语句,因为没有为该列定义任何东西。
使用一个进程来获取序列值也可以,但我认为这会更清晰。
kulphzqa2#
无法将现有列更改为标识列。您发布的
ALTER TABLE
语句将重置现有标识列,使其从下一个可用值开始。它不会将该列修改为标识列,并且会引发错误。相反:重命名现有列、添加新标识列、使用现有列值更新标识列、更改标识列以从下一个可用值开始。
字符串
但是.因为这是测试,只需删除测试表并使用标识列重新创建它,这要快得多。