Duplicate timestamp(6): How is this possible?

  • From: Michael Moore <michaeljmoore@xxxxxxxxx>
  • To: oracle_l <oracle-l@xxxxxxxxxxxxx>
  • Date: Wed, 19 Jan 2011 13:30:26 -0800

The problem is duplicate on primary key which is timestamp(6);
CREATE TABLE TCOM_RETURN_ADJ_AUDIT
(
  TIME_D         TIMESTAMP(6)                   DEFAULT
current_timestamp         NULL,
  RECORD_NUMBER  NUMBER(10)                     NOT NULL,
  MSG            VARCHAR2(4000 BYTE)                NULL,
  RUN_DATE       DATE                               NULL
);

CREATE UNIQUE INDEX TCOM_RETURN_ADJ_AUDIT_PK ON TCOM_RETURN_ADJ_AUDIT
(TIME_D)
LOGGING
TABLESPACE COM_INDX_DS
NOPARALLEL;

ALTER TABLE TCOM_RETURN_ADJ_AUDIT ADD (
  CONSTRAINT TCOM_RETURN_ADJ_AUDIT_PK
  PRIMARY KEY
  (TIME_D)
  USING INDEX TCOM_RETURN_ADJ_AUDIT_PK);


Program does not insert the TIME_D value. Program does not provide TIME_D;
actual value is obtained from table definition which has DEFAULT
current_timestamp (see above);

The code that does the insert:

   PROCEDURE log_audit_info (p_msg_i IN VARCHAR2)
   IS
      PRAGMA AUTONOMOUS_TRANSACTION;
   BEGIN
      INSERT INTO tcom_return_adj_audit (record_number, msg, run_date)
           VALUES (v_read_cnt, p_msg_i, v_run_date);

      COMMIT;
   END log_audit_info;


THE ERROR

ORA-00001: unique constraint (COM_APP.TCOM_RETURN_ADJ_AUDIT_PK) violated



The server clock was not changed, already looked into this as a possibility.

Thanks,

Mike

Other related posts: