【问题标题】:Batch Insert with generated keys deals duplicate entry on unique使用生成的密钥批量插入处理唯一的重复条目
【发布时间】:2012-04-20 01:56:58
【问题描述】:

我正在使用 MySql 和 JDBC...下面是我的表定义

CREATE TABLE `A` (
  `id` int(255) NOT NULL AUTO_INCREMENT,
  `type` varchar(255) NOT NULL,
  `value` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unq` (`type`(50),`value`(50))
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

目前我正在使用语句以使用RETURN_GENERATED_KEYS 选项将行批量插入到该表中,以便将 id 与其他表相关联。

我希望能够执行该操作,但是当/如果发生 DUPLICATE ENTRY(类型和值的相同组合)继续事务,就像什么都没发生但仍然获取生成的密钥,并且如果 DUPLICATE ENTRY 发生检索现有的密钥。

谢谢

【问题讨论】:

    标签: mysql batch-file insert key generated


    【解决方案1】:

    使用IGNORE关键字

    INSET IGNORE ....
    

    引用于Mysql

    如果您使用 IGNORE 关键字,则在执行 INSERT 语句被视为警告。例如,没有 IGNORE,复制现有 UNIQUE 索引或 PRIMARY KEY 的行 表中的值导致重复键错误,语句为 中止。使用 IGNORE,该行仍然没有插入,但没有错误 发布。

    替代语法

    INSERT ... ON DUPLICATE KEY UPDATE

    【讨论】:

    • 但是它仍然会检索现有条目的id吗?
    猜你喜欢
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 2010-09-08
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多