Java 当批次插入中PK上的两条记录重复时,会发生什么情况;“关于重复密钥更新”;

Java 当批次插入中PK上的两条记录重复时,会发生什么情况;“关于重复密钥更新”;,java,mysql,prepared-statement,Java,Mysql,Prepared Statement,我正在使用java+mysql。我尝试在脚本中使用“在重复密钥更新时”进行批量插入,以便在PK重复时进行更新。我理解,如果插入行的主键与现有记录相同,则现有记录将被更新。但是,如果有两个插入的行具有相同的主键,该怎么办?例如,在我的insert sql脚本中 insert into table1 (col1, col2, col3) values (?, ?, ?), (?, ?, ?') on duplicate key update col1=?, col2=?, col3=? 其中co

我正在使用java+mysql。我尝试在脚本中使用“在重复密钥更新时”进行批量插入,以便在PK重复时进行更新。我理解,如果插入行的主键与现有记录相同,则现有记录将被更新。但是,如果有两个插入的行具有相同的主键,该怎么办?例如,在我的insert sql脚本中

insert into table1 (col1, col2, col3) values (?, ?, ?), (?, ?, ?') on duplicate key update col1=?, col2=?, col3=? 
其中col1是表1的PK。现在,假设我的插入记录是

insert into table1 (col1, col2, col3) values (val1, val2, val3), (val1, val4, val5)

它会失败还是会(val1,val4,val5)出现在表中?谢谢。

正如建议的那样,我只是用下面的代码进行了测试

CREATE TABLE `people` (
  `name` varchar(25) NOT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO people (name, age)
    VALUES
    ('Helen', 24),
    ('Katrina', 21),
    ('Helen', 22),
    ('Hui Ling', 25),
    ('Yumie', 29)
ON DUPLICATE KEY UPDATE
    name = VALUES(name),
    age = VALUES(age);

插入了四行,
('Helen',22)
是一行

难道你不能简单地用一些垃圾数据运行一个测试吗?这似乎是一件很容易测试的事情。