内容阅读
在知识库中专注阅读,并随时返回相关工具与课程
ORA-00001常见约束
违反唯一约束
Unique constraint violated
错误描述
INSERT 或 UPDATE 操作试图在受唯一索引或唯一约束限制的列中创建重复值。
可能原因
- 插入的行在唯一键或主键列中存在重复值
- 并发事务同时插入相同键值
- 数据迁移或 ETL 作业产生重复记录
解决方案
- 1插入前检查重复值:SELECT key_col, COUNT(*) FROM table GROUP BY key_col HAVING COUNT(*) > 1;
- 2使用 MERGE(upsert)代替 INSERT 来优雅处理重复
- 3在 PL/SQL 中添加 DUP_VAL_ON_INDEX 异常处理
诊断命令
SELECT index_name, uniqueness FROM dba_indexes WHERE table_name = 'TABLE_NAME';SELECT constraint_name, constraint_type FROM dba_constraints WHERE table_name = 'TABLE_NAME' AND constraint_type IN ('U','P');#unique#constraint#duplicate#primary-key#insert