Oracle ORA-00947:值不够,但已检查列。

Oracle ORA-00947:值不够,但已检查列。,oracle,oracle-sqldeveloper,insert-into,ora-00947,Oracle,Oracle Sqldeveloper,Insert Into,Ora 00947,我已经创建了一个表作为fllow: CREATE TABLE"COMMODITY" (COM_NO VARCHAR2(10) NOT NULL, COM_NAME VARCHAR2(100) NOT NULL, SHOP_NO VARCHAR2(10)NOT NULL, FRU_NO VARCHAR2(10)NOT NULL, COM_PRICE NUMBER(10)NOT NULL, COM_WEIGHT VARCHAR2(30)NOT NULL, COM_REMARKS CLOB NOT

我已经创建了一个表作为fllow:

CREATE TABLE"COMMODITY"
(COM_NO VARCHAR2(10)  NOT NULL,
COM_NAME VARCHAR2(100) NOT NULL,
SHOP_NO VARCHAR2(10)NOT NULL,
FRU_NO VARCHAR2(10)NOT NULL,
COM_PRICE NUMBER(10)NOT NULL,
COM_WEIGHT VARCHAR2(30)NOT NULL,
COM_REMARKS CLOB NOT NULL,
COM_PIC1 BLOB,
COM_PIC2 BLOB,
COM_PIC3 BLOB,
COM_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
COM_STATUS VARCHAR2(10) NOT NULL,
COM_STORE NUMBER(10) NOT NULL,
COM_SCORE NUMBER(2,1)NOT NULL,
COM_PEO NUMBER(10)NOT NULL,
CONSTRAINT COM_COM_NO_PK PRIMARY KEY (COM_NO),
CONSTRAINT COM_SHOP_NO_FK FOREIGN KEY  (SHOP_NO) REFERENCES SHOP(SHOP_NO),
CONSTRAINT COM_FRU_NO_FK FOREIGN KEY  (FRU_NO) REFERENCES FRUIT(FRU_NO)
);
顺序是

CREATE SEQUENCE COM_NO_SEQ
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCACHE
NOCYCLE;
我正在努力做到以下几点:

INSERT INTO COMMODITY VALUES('COM'||LPAD(TO_CHAR(COM_NO_SEQ.NEXTVAL),7,'0'),'平安蘋果','SHO0000001','FRU0000001',1200,'一箱約1斤','好吃的蘋果喔我是CLOB','24-6月-17 03.22.39','上架',80,0,0);
我给了所有不为NULL的列的值。但是仍然存在ORA-00947的问题:没有足够的值


请告诉我原因?

您应该在insert语句中提供列名,如下例所示。如果不提供列列表来映射值,Oracle希望表中的所有列都有值

如果您完全省略了列列表,那么values_子句或查询必须为表中的所有列指定值


为什么不提供列列表时只需提供NOTNULL列?Oracle如何知道要跳过哪些列?如果您提供了其中一个可为null的值,但没有提供其他值,该怎么办?它怎么知道您的意思?
SQL> create table tt1 (id number not null, name varchar2(20));

Table created.

SQL> insert into tt1 values('Joe');
insert into tt1 values('Joe')
            *
ERROR at line 1:
ORA-00947: not enough values


SQL> insert into tt1 values(1);
insert into tt1 values(1)
            *
ERROR at line 1:
ORA-00947: not enough values


SQL> insert into tt1(id) values(1);

1 row created.