使用生成密钥的批量插入处理唯一的重复条目

时间:2012-04-06 12:43:23

标签: mysql batch-file insert key generated

我正在使用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检索现有密钥。

由于

1 个答案:

答案 0 :(得分:1)

使用IGNORE关键字

INSET IGNORE ....

Mysql

中引用
  

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

替代语法

INSERT ... ON DUPLICATE KEY UPDATE