Yang diperlukan hanyalah satu bentrokan indeks yang akan melanggar duplikat untuk baris yang akan diperbarui, dan bukan untuk membuat baris baru. Bentrokan indeks bisa menjadi kunci utama, satu di indeks lain baik itu satu kolom atau indeks komposit di beberapa kolom.
Memang di bawah ini agak timpang, tapi imajinatif yang bisa saya lakukan sekarang.
create table user
(
id int auto_increment primary key,
userName varchar(20) not null,
friendCount int not null,
unique key(userName)
);
insert user(userName,friendCount) values('Jason7',0) on duplicate key update friendCount=friendCount+1;
select * from user;
+----+----------+-------------+
| id | userName | friendCount |
+----+----------+-------------+
| 1 | Jason7 | 0 |
+----+----------+-------------+
insert user(userName,friendCount) values('Fred',0) on duplicate key update friendCount=friendCount+1;
select * from user;
+----+----------+-------------+
| id | userName | friendCount |
+----+----------+-------------+
| 1 | Jason7 | 0 |
| 2 | Fred | 0 |
+----+----------+-------------+
insert user(userName,friendCount) values('Fred',0) on duplicate key update friendCount=friendCount+1;
+----+----------+-------------+
| id | userName | friendCount |
+----+----------+-------------+
| 1 | Jason7 | 0 |
| 2 | Fred | 1 |
+----+----------+-------------+