任何人都可以解釋為什么我沒有得到足夠的值錯誤,因為我使用自動增量并且沒有在插入中添加任何值謝謝
CREATE TABLE Customer(
customerId INTEGER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1) primary key,
firstName VARCHAR2(25) not null,
middleName VARCHAR2(25),
lastName VARCHAR2(25) not null,
dateOfBirth DATE not null,
phoneNumber NUMBER(10) not null,
billingAddress VARCHAR2(35) not null
);
INSERT INTO Customer VALUES
('Sam', null, 'Siqi', (TO_DATE('18/12/1999', 'DD/MM/YYYY')),12345678,
'Smith Street NSW');
uj5u.com熱心網友回復:
嘗試這個:
INSERT INTO Customer VALUES (DEFAULT,'Sam', null, 'Siqi', (TO_DATE('18/12/1999', 'DD/MM/YYYY')),12345678, 'Smith Street NSW');
uj5u.com熱心網友回復:
這是您創建的表。它包含 7 列:
SQL> CREATE TABLE Customer
2 (
3 customerId INTEGER
4 GENERATED ALWAYS AS IDENTITY
5 ( START WITH 1 INCREMENT BY 1)
6 PRIMARY KEY,
7 firstName VARCHAR2 (25) NOT NULL,
8 middleName VARCHAR2 (25),
9 lastName VARCHAR2 (25) NOT NULL,
10 dateOfBirth DATE NOT NULL,
11 phoneNumber NUMBER (10) NOT NULL,
12 billingAddress VARCHAR2 (35) NOT NULL
13 );
Table created.
您的插入嘗試失敗:
SQL> INSERT INTO Customer
2 VALUES ('Sam',
3 NULL,
4 'Siqi',
5 (TO_DATE ('18/12/1999', 'DD/MM/YYYY')),
6 12345678,
7 'Smith Street NSW');
INSERT INTO Customer
*
ERROR at line 1:
ORA-00947: not enough values
為什么失敗了?因為您插入了6 個值,而表有7 列。總是,但總是指定所有涉及的列。這包括select你寫(即避免select *)和 - 在這種情況下 - insert。所以:
SQL> INSERT INTO Customer (firstname,
2 middlename,
3 lastname,
4 dateofbirth,
5 phonenumber,
6 billingaddress)
7 VALUES ('Sam',
8 NULL,
9 'Siqi',
10 (TO_DATE ('18/12/1999', 'DD/MM/YYYY')),
11 12345678,
12 'Smith Street NSW');
1 row created.
SQL>
現在它起作用了。
這一事實customerid是自動生成的,并不意味著你可以跳過它。
是的,您可以使用default(正如 Anand 的回答所建議的那樣),但在我看來,這是一種不好的做法。正如我所說:始終命名您正在使用的所有列。
SQL> INSERT INTO customer
2 VALUES (DEFAULT,
3 'Sam',
4 NULL,
5 'Siqi',
6 (TO_DATE ('18/12/1999', 'DD/MM/YYYY')),
7 12345678,
8 'Smith Street NSW');
1 row created.
SQL>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/314306.html
