Sql 将数据插入表时获取ORA-00001和ORA-01438错误
尝试运行此脚本时遇到问题,出现错误: 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
如果您在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;