ORA-00001: Unique constraint violated(违反唯一约束)
Oracle含义
插入或更新的行违反了 UNIQUE 或 PRIMARY KEY 约束,即相同的值已经存在。
原因
以相同的键值再次插入行、向必须唯一的列写入重复数据,或在复制/重跑过程中对同一条记录处理了两次。
解决方法
根据错误消息中的约束名找出被违反的列:SELECT column_name FROM all_cons_columns WHERE constraint_name = 'CONSTRAINT_NAME'。使用 GROUP BY ... HAVING COUNT(*) > 1 查找重复数据。在应用中,对已存在的记录使用 UPDATE 或 MERGE 而不是 INSERT。如果序列值落后,用 ALTER SEQUENCE 将其推进。
同一数据库的其他条目
- ORA-00054Resource busy and acquire with NOWAIT specified or timeout expired(资源正忙,且指定了 NOWAIT 或等待超时)
- ORA-00060Deadlock detected while waiting for resource(等待资源时检测到死锁)
- ORA-01017Invalid username/password; logon denied(用户名/密码无效;登录被拒绝)
- ORA-01555Snapshot too old: rollback segment number too small(快照过旧:回滚段编号过小)