यह केवल एक इंडेक्स क्लैश है जो पंक्ति को अद्यतन करने के लिए डुप्लिकेट का उल्लंघन करेगा, न कि एक नई पंक्ति बनाने के लिए। इंडेक्स क्लैश एक प्राथमिक कुंजी हो सकती है, एक अन्य इंडेक्स पर एक सिंगल कॉलम या कई कॉलम में समग्र इंडेक्स हो सकता है।
दी गई नीचे बल्कि लंगड़ा है, लेकिन कल्पनाशील है जितना मैं अभी कर सकता हूं।
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 |
+----+----------+-------------+