本文介绍 OceanBase 数据库 Oracle 模式下插入数据时提示重复的输入并报 ORA-00001 错误的处理方法。
问题现象
向有主键的表 t_insert 中插入数据时,显示主键值重复。
obclient [SYS]> INSERT INTO t_insert(id, name, value) VALUES (3,'US', 10003),(4, 'JP', 10004);
ORA-00001: unique constraint '3' for key 'PRIMARY' violated
该报错信息对应的错误码信息如下:
错误码:ORA-00001
OceanBase 错误码:5024
SQLSTATE:23000
可能原因
向表中插入数据时,如果表上有唯一性约束,再插入相同的记录时,系统就会报错。
解决方法
请参考以下两种方法解决冲突。
查看
t_insert表中的数据,确认插入的数据是否与主键列的数据重复及现有行数据的取舍。obclient [SYS]> SELECT * FROM t_insert; +----+------+-------+ | ID | NAME | VALUE | +----+------+-------+ | 1 | CN | 10001 | | 2 | EN | 10002 | | 3 | UK | 10003 | | 4 | JP | 10004 | +----+------+-------+ 4 rows in set如果需要保留已存在的行,可以执行以下语句,更新相应
id=3中的数据。obclient [SYS]> UPDATE t_insert SET name = 'US' WHERE id = 3; Query OK, 1 row affected说明
操作成功后,再次查看
t_insert表中的数据。obclient [SYS]> SELECT * FROM t_insert; +----+------+-------+ | ID | NAME | VALUE | +----+------+-------+ | 1 | CN | 10001 | | 2 | EN | 10002 | | 3 | US | 10003 | | 4 | JP | 10004 | +----+------+-------+ 4 rows in set