【问题标题】:Conflict creating table with Index and Primary Key使用索引和主键创建表冲突
【发布时间】:2016-04-22 13:38:32
【问题描述】:

我是一名资深的 SQL Server 开发人员,最近转到一个需要 Oracle 的项目,我对错误 [ORA-02260: table can only one primary key] 感到困惑,我正在使用 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);

【问题讨论】:

    标签: oracle


    【解决方案1】:

    假设你得到的错误是

    ORA-01408: such column list already indexed.
    

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

    【讨论】:

    • 谢谢,我以为我读过主键没有创建索引。
    猜你喜欢
    • 2019-03-17
    • 2015-09-10
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 2012-01-10
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多