次のテーブルがあるとしましょう
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」行がある場合、このクエリは、最後に挿入された行の次に等しい 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