向Dept表插入数据触发ORA-00001唯一约束违反错误的解决咨询
解决ORA-00001唯一约束违反错误的步骤
1. 定位冲突原因
ORA-00001错误说明你要插入的数据违反了表的唯一约束,你的Dept表有两个唯一约束:
Dcode列的主键约束(主键自带唯一性)Dname列的unique约束
先执行以下查询确认表中已有的数据:
SELECT * FROM Dept;
查看是否已经存在Dcode=13或者Dname='Exe'的记录。
如果想直接定位错误对应的约束列,执行以下SQL查询系统字典:
SELECT cc.column_name FROM user_constraints uc JOIN user_cons_columns cc ON uc.constraint_name = cc.constraint_name WHERE uc.constraint_name = 'SYS_C007019';
返回的column_name就是导致冲突的列。
2. 根据冲突场景处理
场景1:Dcode=13已存在
更换一个未使用的2位数字作为Dcode,比如:
INSERT INTO Dept VALUES (14,'Exe','G');
场景2:Dname='Exe'已存在
有两种处理方式:
- 更换为check约束允许的其他部门名称:
INSERT INTO Dept VALUES (13,'Ope','G');
- 删除已存在的
Dname='Exe'的记录后再插入:
DELETE FROM Dept WHERE Dname = 'Exe'; INSERT INTO Dept VALUES (13,'Exe','G');
场景3:如果需要保留现有数据且插入新数据
调整插入的Dcode和Dname为表中未出现过的合法值,确保同时满足主键唯一、Dname唯一且在('Acc', 'Resea', 'Ope', 'Exe')范围内。
内容的提问来源于stack exchange,提问作者Wajid
相关产品推荐
相关产品推荐

