我正在使用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)?谢谢。
根据建议,我只是使用以下代码进行了测试
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)
是那一行。