如果无法在sql中插入表,如何解决主键问题?

时间:2019-07-17 07:00:49

标签: sql oracle

如果无法在sql PLUS中插入表,如何解决主键问题? 我的意思是我需要添加更多列

CREATE TABLE SETS (
  2  ID NUMBER (4) CONSTRAINT SETS_PK PRIMARY KEY,
  3  COM NUMBER (7,2),
  4  ENAME VARCHAR2(15),
  5  SAL NUMBER(8,2)
  6* );

INSERT INTO SETS VALUES (1, 1, 'COMFORT', 0);

已插入1行。

INSERT INTO SETS VALUES (1, 2, ''Progressive', 5000);

Error starting at line : 1 in command -
insert into sets values(1, 2, 'Progressive', 5000)
Error report -
ORA-00001: нарушено ограничение уникальности (AIDAR.SETS_PK)

2 个答案:

答案 0 :(得分:1)

因为您已将id声明为主键,所以它对于每一行都是唯一的

INSERT INTO SETS VALUES (1, 1, 'COMFORT', 0);
INSERT INTO SETS VALUES (2, 2, 'Progressive', 5000);

但是您为两行提供了相同的ID,这就是它引发错误的原因。顺便说一句,我已经编辑了第二行的值,它将立即可用

答案 1 :(得分:0)

根据建议,您需要使用组合键来解决问题:

CREATE TABLE SETS (
 ID NUMBER (4),
 COM NUMBER (7,2),
 ENAME VARCHAR2(15),
 SAL NUMBER(8,2),
 CONSTRAINT SETS_PK PRIMARY KEY (ID, COM)
 );


INSERT INTO SETS VALUES (1, 1, 'COMFORT', 0);
INSERT INTO SETS VALUES (1, 2, 'Progressive', 5000);


SELECT
    *
FROM
    SETS;

-- Output: --

        ID        COM ENAME                  SAL
---------- ---------- --------------- ----------
         1          1 COMFORT                  0
         1          2 Progressive           5000

干杯!