[如果在批处理插入中使用“ ON DUPLICATE KEY UPDATE”的两个记录在PK上重复出现两个记录,将会发生什么

问题描述 投票:0回答:1

我正在使用Java + mysql。我尝试在脚本中使用“ ON DUPLICATE KEY UPDATE”批量插入,如果PK重复则进行更新。我了解,如果插入行的PK与现有记录相同,那么现有记录将被更新。但是,如果有两个插入的行具有相同的PK怎么办?例如,在我的插入sql脚本中,它类似于

insert into table1 (col1, col2, col3) values (?, ?, ?), (?, ?, ?') on duplicate key update col1=?, col2=?, col3=? 

其中col1是table1的PK。现在,假设我的插入记录是

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

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

java mysql prepared-statement
1个回答
1
投票

根据建议,我只是使用以下代码进行了测试

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)是那一行。

© www.soinside.com 2019 - 2024. All rights reserved.