【发布时间】:2015-03-16 16:53:43
【问题描述】:
我是数据库新手,遇到以下问题。
在 Oracle 数据库中,我有一个名为 KM_COUNTRY_AREA 的表,其结构如下:
COLUMN NAME DATA_TYPE NULLABLE DATA_DEFAULT COLUMN_ID
--------------------------------------------------------------------------------
IDCOUNTRYAREA NUMBER(19,0) No (null) 1
NOMEFOLDER VARCHAR2(255 CHAR) Yes (null) 2
COUNTRY_IDCOUNTRY NUMBER(19,0) Yes (null) 3
所以 IDCOUNTRYAREA 字段我认为它是一个自动生成的字段(因为该表是使用 Hibernate 创建的,并且该字段被定义为 @Id 和 @模型类中的 GeneratedValue)。
所以现在我必须将一些记录直接插入到数据库中(我需要做一些测试)但是我发现编写插入查询时遇到了一些问题,我正在关注本教程:http://www.w3schools.com/sql/sql_insert.asp
我已经创建了这个 SQL 语句:
INSERT INTO KM_COUNTRY_AREA (IDCOUNTRYAREA, NOMEFOLDER, COUNTRY_IDCOUNTRY) VALUES (null, "BRAZIL", 715);
我已将第一列值设为 null,因为它必须是自动生成的(但我认为这是错误的)。
它不起作用,我收到以下错误消息:
Errore con inizio alla riga 1 nel comando:
INSERT INTO KM_COUNTRY_AREA (IDCOUNTRYAREA, NOMEFOLDER, COUNTRY_IDCOUNTRY)
VALUES (null, "BRAZIL", 715)
Errore alla riga del comando:2 Colonna:14
Report errori:
Errore SQL: ORA-00984: colonna non consentita in questo caso
00984. 00000 - "column not allowed here"
*Cause:
*Action:
如何解决此问题并将我的行正确插入到我的 KM_COUNTRY_AREA 表中?
Tnx
EDIT-1:
我尝试使用以下方法进行修改:
INSERT INTO KM_COUNTRY_AREA (IDCOUNTRYAREA, NOMEFOLDER, COUNTRY_IDCOUNTRY)
VALUES (null, 'BRAZIL', 715);
但我收到以下错误消息:
Errore con inizio alla riga 1 nel comando:
INSERT INTO KM_COUNTRY_AREA (IDCOUNTRYAREA, NOMEFOLDER, COUNTRY_IDCOUNTRY)
VALUES (null, 'BRAZIL', 715)
Report errori:
Errore SQL: ORA-01400: impossibile inserire NULL in ("PRC_KM_OWNER"."KM_COUNTRY_AREA"."IDCOUNTRYAREA")
01400. 00000 - "cannot insert NULL into (%s)"
*Cause:
*Action:
主键似乎不能为 null,但这很奇怪,因为在 Hibernate 中我将此字段定义为:
@Id
@GeneratedValue
private Long idCountryArea;
所以我认为它的值必须是自动生成的,有什么问题?
【问题讨论】:
-
仅仅因为您的 Java 代码中有一些注释并不意味着 Oracle 会神奇地为该列生成值。阅读如何使用序列。
标签: sql database oracle oracle11g oracle-sqldeveloper