冲突使用索引和主键创建表

时间:2016-04-22 05:11:48

标签: oracle

我是资深的SQL Server开发人员,最近搬到了一个需要Oracle的项目,我对错误感到困惑[ORA-02260:表只能有一个主键]我正在使用Oracle 11。

我正在尝试使用索引和主键创建引用表。 但是,已经声明了我的列Partner_ID已经声明的错误。我知道我遗漏了一些简单的东西,但我在这里看过的文档和其他资料并没有给我一些线索。请帮我理解我做错了什么。

谢谢

ALTER TABLE REF_PARTNER
DROP PRIMARY KEY CASCADE;

DROP TABLE REF_PARTNER CASCADE CONSTRAINTS;

CREATE TABLE REF_PARTNER
(
  PARTNER_ID               NUMBER(10)  PRIMARY KEY NOT NULL,
  GLOBAL_APPID             VARCHAR2(256 BYTE)      NOT NULL,
  FRIENDLY_NAME            VARCHAR2(256 BYTE)      NOT NULL,
  CREATE_DTS               DATE,
  MODIFIED_DTS             DATE,
  LAST_MODIFIED_USER       VARCHAR2(40 BYTE)
)
TABLESPACE DATA_1
PCTUSED    0
PCTFREE    5
INITRANS   1
MAXTRANS   255
STORAGE    (
            INITIAL          1M
            NEXT             1M
            MAXSIZE          UNLIMITED
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
LOGGING 
NOCOMPRESS 
NOCACHE
MONITORING;

BEGIN
    EXECUTE IMMEDIATE 'DROP SEQUENCE PARTNER_SEQ';
    EXCEPTION WHEN OTHERS THEN NULL;
END;

CREATE SEQUENCE PARTNER_SEQ START WITH 1 INCREMENT BY 1 MINVALUE 1     NOMAXVALUE NOCYCLE CACHE 200;


--CREATE UNIQUE INDEX REF_PARTNER_IDX ON REF_PARTNER
--(PARTNER_ID)
--LOGGING
--TABLESPACE INDEX_1
--PCTFREE    10
--INITRANS   2
--MAXTRANS   255
--STORAGE    (
--            INITIAL          64K
--            NEXT             64K
--            MAXSIZE          UNLIMITED
--            MINEXTENTS       1
--            MAXEXTENTS       UNLIMITED
--            PCTINCREASE      0
--            BUFFER_POOL      DEFAULT
--           );

--ALTER TABLE REF_PARTNER ADD (
--  CONSTRAINT REF_PARTNER_PK
--  PRIMARY KEY
--  (PARTNER_ID)
--  USING INDEX REF_PARTNER_PK
--  ENABLE VALIDATE);

1 个答案:

答案 0 :(得分:1)

假设你得到的错误是

ORA-01408: such column list already indexed.

这是因为您使用partner_id作为主键创建表。这会自动在partner_id上创建唯一索引。 在您将partner_id声明为主键后,无需在partner_id上创建唯一键。