2017-12-10 2 views
1

Ich habe eine Tabelle als fllow erstellt:ORA-00947: nicht genug Werte, aber überprüfen Sie die Spalte bereits.

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) 
); 

und die Sequenz ist

CREATE SEQUENCE COM_NO_SEQ 
INCREMENT BY 1 
START WITH 1 
NOMAXVALUE 
NOCACHE 
NOCYCLE; 

Ich versuche, die folgendes zu tun: zu

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); 

Ich habe den Wert die ganze Spalte, wo ist nicht NULL. Aber immer noch das Problem von ORA-00947: nicht genug Werte.

Plz sag mir warum?

+1

Warum nur glauben Sie nicht-null-Spalten liefern müssen wenn Sie keine Spaltenliste angeben? Woher weiß Oracle, welche Spalten Sie überspringen? Was, wenn Sie einen der Nullbaren liefern, aber nicht die anderen - wie könnte er wissen, was Sie gemeint haben? –

Antwort

2

Sie sollten Spaltennamen in der INSERT-Anweisung angeben, wie im folgenden Beispiel gezeigt. Wenn Sie keine Liste mit Spalten zum Zuordnen der Werte bereitstellen, erwartet Oracle Werte für alle Spalten der Tabelle.

Wenn Sie die Spaltenliste ganz weglassen, dann wird die values_clause oder Abfrage müssen Werte für alle Spalten in der Tabelle angeben INSERT Staement

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. 
Verwandte Themen