假设我们有下表
create table so (
`id` int(11) not null auto_increment,
`num` varchar(20) not null, primary key (`id`),
unique (`num`)
) engine=InnoDB default charset=utf8;
然后我们可以使用以下查询插入新行
insert into so (num) values ("hi") on duplicate key update id=last_insert_id()+1;
如果已经有“hi”-row,这个查询将在最后一次插入之后更新它的 id 为相等
在你的情况下
insert into table (userId, productId) values (someUserId, someProductId)
on duplicate key update id=last_insert_id()+1;
此外,还有replace
MySQL 扩展。
replace into table (userId, productId) values (someUserId, someProductId);
作为一个只有当你的表有或约束on duplicate key update
时它才会起作用。不像将首先删除现有行然后插入新行,而只会更新它。unique
primary key
on duplicate key update
replace
on duplicate key update