Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: ORA-00001 on non-unique index!

Re: ORA-00001 on non-unique index!

From: <charles.a.berger_at_gmail.com>
Date: 8 Nov 2006 09:09:59 -0800
Message-ID: <1163005798.938871.173200@e3g2000cwe.googlegroups.com>


DA Morgan wrote:
> charles.a.berger_at_gmail.com wrote:
>
> > Otherwise I'm thinking it must be a bug in Oracle, although a search of
> > Metalink yesterday revealed no matches.
> >
> > Cheers,
> >
> > Charles.
>
> Lets find out. Post the DDL for the table and all of its indexes and
> constraints so we can try it out in various versions. Be sure to
> indicate the version where you are finding the issue.

Here's the DDL:

CREATE TABLE sdiprdmst
(

  ORG_LVL_CHILD           NUMBER(12),
  PRD_LVL_CHILD           NUMBER(12),
  ISS_TECH_KEY            NUMBER(12),
  ALT_TECH_KEY            NUMBER(12),
  TRAN_TYPE               CHAR(1),
  AUDIT_NUMBER            NUMBER(12),
  ISS_TYPE                CHAR(1),
  ORG_LVL_NUMBER          NUMBER(12),
  PRD_LVL_NUMBER          CHAR(15),
  PRD_LVL_PARENT          NUMBER(12),
  PRD_LVL_ID              NUMBER(5),
  PRD_LVL_PARENT_NUM      CHAR(15),
  PRD_NAME_FULL           VARCHAR2(50),
  PRD_TARGETGM            NUMBER(7,3),
  PRD_LVL_ACTIVE          CHAR(1),
  PRD_STYLE_IND           CHAR(1),
  PRD_STATUS              NUMBER(2),
  GRP_AUDIT_NUMBER        NUMBER(12),
  PRD_PDH_KEY_1           NUMBER(12),
  PRD_PDH_NAME_1          CHAR(30),
  PRD_PDD_KEY_1           NUMBER(12),
  PRD_PDD_CODE_1          CHAR(6),
  PRD_PDH_KEY_2           NUMBER(12),
  PRD_PDH_NAME_2          CHAR(30),
  PRD_PDD_KEY_2           NUMBER(12),
  PRD_PDD_CODE_2          CHAR(6),
  PRD_PDH_KEY_3           NUMBER(12),
  PRD_PDH_NAME_3          CHAR(30),
  PRD_PDD_KEY_3           NUMBER(12),
  PRD_PDD_CODE_3          CHAR(6),
  DATE_CREATED            DATE,
  DOWNLOAD_DATE_1         DATE,
  DOWNLOAD_DATE_2         DATE,
  PRD_UOM_SIZE            NUMBER(13,7),
  PRD_SLL_UOM             CHAR(6),
  PRD_SLL_NAME            VARCHAR2(20),
  PRD_COMP_UOM            CHAR(6),
  PRD_COMP_NAME           VARCHAR2(20),
  PRD_CONV_QTY            NUMBER(13,7),
  PRD_CROSS_DOCK          CHAR(1),
  PRD_LVL_NUMBER_OLD      CHAR(15),

  PRD_LVL_PARENT_NUM_OLD CHAR(15)
);

CREATE INDEX XXX_SDIPRDMST_PLC ON sdiprdmst (PRD_LVL_CHILD); CREATE INDEX XXX_SDIPRDMST_IX1 ON sdiprdmst (DECODE(TO_CHAR(TRUNC("DOWNLOAD_DATE_2")),NULL,'01-JAN-3000',NULL)); N.B. This index was my first attempt to create a function based index on the null download_date_2 columns but, as it contained records for all the values of ISS_TECH_KEY, it wasn't selective enough and will be dropped. It was replaced with XX_SDIPRDMST_IX3.

CREATE INDEX XXX_SDIPRDMST_IX2 ON sdiprdmst (DECODE("DOWNLOAD_DATE_2",'31-DEC-3000','31-DEC-3000',NULL)); CREATE INDEX XXX_SDIPRDMST_IX3 ON sdiprdmst (DECODE("ISS_TECH_KEY",5,DECODE(TO_CHAR(TRUNC("DOWNLOAD_DATE_2")),NULL,'01-JAN-3000',NULL),NULL)); CREATE INDEX SDIPRDMST_UK1 ON sdiprdmst
(ORG_LVL_NUMBER); CREATE UNIQUE INDEX SDIPRDMSTP1 ON sdiprdmst (ORG_LVL_CHILD, ALT_TECH_KEY, PRD_LVL_CHILD, ISS_TECH_KEY, TRAN_TYPE, AUDIT_NUMBER); ALTER TABLE sdiprdmst ADD (
  CONSTRAINT SDIPRDMSTP1
 PRIMARY KEY
 (ORG_LVL_CHILD, ALT_TECH_KEY, PRD_LVL_CHILD, ISS_TECH_KEY, TRAN_TYPE, AUDIT_NUMBER);
>
> A few rows of sample data the produce any problem you think data related
> too if that is the case (can't remember).

Not sure what exactly you want. If it's any help I am expecting my query to update 42 out of 1884666 rows in the table. So the index XXX_SDIPRDMST_IX2 should then contain pointers to 42 records.

> --
> Daniel A. Morgan
> University of Washington
> damorgan_at_x.washington.edu
> (replace x with u to respond)
> Puget Sound Oracle Users Group
> www.psoug.org
Received on Wed Nov 08 2006 - 11:09:59 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US