ORA-00947:not enough values报错:自增列INSERT时值不足原因
ORA-00947错误触发原因
ORA-00947报错的核心逻辑是INSERT语句传入的值数量与目标匹配列的数量不一致,本次报错的具体原因如下:
- 你使用的
INSERT INTO 表名 VALUES (值列表)属于Oracle全列插入语法,要求传入的值的数量必须和表的总列数完全相等。你创建的Customer表总计包含7个列(customerId、firstName、middleName、lastName、dateOfBirth、phoneNumber、billingAddress),但你在VALUES后仅传入了6个值,数量不匹配直接触发报错。 - 即使customerId是
GENERATED ALWAYS as IDENTITY定义的自增主键,Oracle也不会在全列插入语法下自动跳过自增列做值匹配,全列插入语法强制要求你为所有列赋值,但自增主键又不允许主动传入自定义值,因此这种场景下必须显式指定要插入的列。
修复方案
将INSERT语句修改为显式指定插入列的写法即可正常执行:
INSERT INTO Customer (firstName, middleName, lastName, dateOfBirth, phoneNumber, billingAddress) VALUES ('Sam', null, 'Siqi', TO_DATE('18/12/1999', 'DD/MM/YYYY'), 12345678, 'Smith Street NSW');
内容的提问来源于stack exchange,提问作者Saim Akhter Siddiqi
相关产品推荐
相关产品推荐

