我在数据库中很新,我遇到了以下问题。
在Oracle DB上,我有一个名为 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 。
所以现在我必须直接在DB中插入一些记录(我需要做一些测试)但是我发现编写插入查询时遇到了一些问题,我正在学习本教程: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
修改-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;
所以我认为它的价值必须自动生成,出了什么问题?
答案 0 :(得分:3)
删除Double quotes
并使用single quotes
插入varchar
数据
同时创建sequence
以自动生成值
CREATE SEQUENCE seq
MINVALUE 1
START WITH 1
INCREMENT BY 1
INSERT INTO KM_COUNTRY_AREA
(IDCOUNTRYAREA,NOMEFOLDER, COUNTRY_IDCOUNTRY)
VALUES (seq.nextval, 'BRAZIL', 715)