暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

唯一键冲突

SQL新手 2022-12-08
715

本文为您介绍唯一键冲突的相关报错及处理方式。

报错:ERROR 1062

错误码

  • OceanBase 错误码:5024

  • 兼容 MySQL 错误码:1062

示例

t_insert 表插入数据时显示主键值 3 重复。

obclient> INSERT INTO t_insert(id, name, value) VALUES (3,'UK', 10003),(4, 'JP', 10004);
ERROR 1062 (23000): Duplicate entry '3' for key 'PRIMARY'

如何处理

方式 1

通过 INSERT IGNORE INTO 避免约束冲突,IGNORE 关键字可以忽略由于约束冲突导致的 INSERT 失败的影响。

  1. 在 t_insert 表插入数据时添加 IGNORE 关键字。

    obclient> INSERT IGNORE INTO t_insert(id, name, value) VALUES (3,'UK', 10003),(4, 'JP', 10004);
    Query OK, 1 row affected
    
  2. 再次查看 t_insert 表的数据。

    obclient> select * from t_insert;
    +----+------+-------+---------------------+
    | id | name | value | gmt_create          |
    +----+------+-------+---------------------+
    |  1 | CN   | 10001 | 1970-01-01 16:05:45 |
    |  2 | US   | 10002 | 1970-01-01 16:05:54 |
    |  3 | EN   | 10003 | 1970-01-01 16:05:54 |
    |  4 | JP   | 10004 | 1970-01-01 16:06:08 |
    +----+------+-------+---------------------+
    4 rows in set
    

方式 2

通过 INSERT INTO ON DUPLICATE KEY UPDATE 避免约束冲突,可以指定对重复主键或唯一键的后续处理,以下示例对冲突行内容进行了更新。

说明

  • 指定 ON DUPLICATE KEY UPDATE:当要插入的主键或唯一键有重复时,会用配置值替换待插入的值。
  • 不指定 ON DUPLICATE KEY UPDATE:当要插入的主键或唯一键有重复时,插入报错。
  1. 在 t_insert 表插入数据时通过 INSERT INTO ON DUPLICATE KEY UPDATE 避免约束冲突。

    obclient> INSERT INTO t_insert(id, name, value) VALUES (3,'UK', 10003),(4, 'JP', 10004) ON DUPLICATE KEY UPDATE name=VALUES(name);
    Query OK, 1 row affected
    
  2. 再次查看 t_insert 表的数据。

    obclient> select * from t_insert;
    +----+------+-------+---------------------+
    | id | name | value | gmt_create          |
    +----+------+-------+---------------------+
    |  1 | CN   | 10001 | 1970-01-01 16:05:45 |
    |  2 | US   | 10002 | 1970-01-01 16:05:54 |
    |  3 | UK   | 10003 | 1970-01-01 16:05:54 |
    |  4 | JP   | 10004 | 1970-01-01 16:06:08 |
    +----+------+-------+---------------------+
    4 rows in set
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论