Sql 将数据插入表时获取ORA-00001和ORA-01438错误

Sql 将数据插入表时获取ORA-00001和ORA-01438错误,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,尝试运行此脚本时遇到问题,出现错误: ORA-00001:违反了唯一约束(约束名称) 因此,问题是无法在表中插入日期,其他错误是: ORA-01438:大于此列允许的指定精度的值 如果您在oracle中创建表,则不支持自动增量 使用MSW\u ID作为编号创建表,并创建一个序列,将其在表中的值作为编号使用 CREATE TABLE MSW ( MSW_ID number, COMPONENTS VARCHAR2(15) NOT NULL, MATTER VARCHAR2(2) NOT

尝试运行此脚本时遇到问题,出现错误:

ORA-00001:违反了唯一约束(约束名称)

因此,问题是无法在表中插入日期,其他错误是:

ORA-01438:大于此列允许的指定精度的值


如果您在oracle中创建表,则不支持
自动增量

使用
MSW\u ID
作为编号创建表,并创建一个序列,将其在表中的值作为编号使用

CREATE TABLE MSW

( MSW_ID number, 
 COMPONENTS VARCHAR2(15) NOT NULL, 
 MATTER VARCHAR2(2) NOT NULL, 
 LIC NUMBER(4, 2), 
 MIC NUMBER(4, 2), 
 UIP NUMBER(4, 2), 
 CONSTRAINT NSW_pk PRIMARY KEY (MSW_ID));
你可以学习更多关于序列的知识

然后插入查询

INSERT  INTO MSW ( MSW_ID, COMPONENTS, MATTER, LIC, MIC, UIP) VALUES
                (SEQ_MSW_ID.NEXTVAL, 'Food waste'   ,'OG','50.50','39.00','13.00'); --> semicolon
INSERT  INTO MSW ( MSW_ID, COMPONENTS, MATTER, LIC, MIC, UIP) VALUES
                 (SEQ_MSW_ID.NEXTVAL, 'Paper'        ,'OG','05.50','19.00','32.50');  --> semicolon
.
.
.
INSERT  INTO MSW ( MSW_ID, COMPONENTS, MATTER, LIC, MIC, UIP) VALUES
                 (SEQ_MSW_ID.NEXTVAL, 'Drit,ash,etc' ,'IG','20.50','15.50','05.00');  --> semicolon
或者使用insert all作为单个语句作为

INSERT ALL 
     INTO MSW ( MSW_ID, COMPONENTS, MATTER, LIC, MIC, UIP) VALUES
                (SEQ_MSW_ID.NEXTVAL, 'Food waste'   ,'OG','50.50','39.00','13.00')
     INTO MSW ( MSW_ID, COMPONENTS, MATTER, LIC, MIC, UIP) VALUES
                (SEQ_MSW_ID.NEXTVAL, 'Paper'        ,'OG','05.50','19.00','32.50')
     .
     .
     .
     INTO MSW ( MSW_ID, COMPONENTS, MATTER, LIC, MIC, UIP) VALUES
                (SEQ_MSW_ID.NEXTVAL, 'Drit,ash,etc' ,'IG','20.50','15.50','05.00')
SELECT * FROM DUAL;  --> semicolon

错误消息是由于
int()
中的额外括号造成的


顺便说一句,这个问题与PL/SQL无关,这是一个普通的Oracle SQL问题。

您可以将序列缓存大小增加到200,默认值为20

alter sequence SEQ_TEST_ID cache 200;

再试一次。

谢谢,但我还是遇到了同样的问题:再次更新了帖子,效果很好,我刚刚遇到了ORA-00917的一个小问题:缺少逗号可能缺少了一些逗号,再次检查语法或共享实际代码。我检查了它,现在又出现了另一个错误ORA-00001,我到处找都找不到,你用的是什么oracle版本?太好了!!只是一个信息。。Oracle 12c具有自动增量功能!!informationOP的thx编辑了问题并修复了无效的表格创建。
INSERT ALL 
     INTO MSW ( MSW_ID, COMPONENTS, MATTER, LIC, MIC, UIP) VALUES
                (SEQ_MSW_ID.NEXTVAL, 'Food waste'   ,'OG','50.50','39.00','13.00')
     INTO MSW ( MSW_ID, COMPONENTS, MATTER, LIC, MIC, UIP) VALUES
                (SEQ_MSW_ID.NEXTVAL, 'Paper'        ,'OG','05.50','19.00','32.50')
     .
     .
     .
     INTO MSW ( MSW_ID, COMPONENTS, MATTER, LIC, MIC, UIP) VALUES
                (SEQ_MSW_ID.NEXTVAL, 'Drit,ash,etc' ,'IG','20.50','15.50','05.00')
SELECT * FROM DUAL;  --> semicolon
SQL> create table foo(f int());
create table foo(f int())
                      *
ERROR at line 1:
ORA-00907: missing right parenthesis


SQL> create table foo(f int);

Table created.

SQL> 
alter sequence SEQ_TEST_ID cache 200;