插入记录时的唯一约束错误

时间:2016-07-13 07:58:05

标签: sql oracle

将记录插入MY_TABLE时出现错误

  

ORA-00001:违反了唯一约束(TEST.MY_TABLE_PK)

这可能是由于重复的TRANS_ID造成的。但我不知道要解决这个问题。如何避免ORA-00001错误并将记录插入MY_TABLE

  CREATE UNIQUE INDEX "MY_TABLE_PK" ON "MY_TABLE_TRANS" ("TRANS_ID") 
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
  TABLESPACE "TEST" ;

2 个答案:

答案 0 :(得分:1)

如果您不关心重复

,请删除索引
ALTER TABLE MY_TABLE_TRANS DROP INDEX MY_TABLE_PK;

或者只选择\ distinct的唯一记录:

SELECT t.trans_id , MAX(Other Column) , MAX(...
FROM MY_TABLE_TRANS t
GROUP BY t.trans_id

答案 1 :(得分:0)

由于您的TRANS_ID已经存在于您的MY_TABLE_TRANS表中,您还可以更新当前记录(如果您当然有权这样做)

首先验证记录是什么。

SELECT *
FROM MY_TABLE_TRANS
WHERE trans_id = 'your trans_id here'

看看记录。如果您想修改它,可以使用更新而不是新 INSERT

UPDATE MY_TABLE_TRANS
SET (put your field that need to be updated) = 'your value'
WHERE trans_id = 'your trans_id here'