itulah yang insert on duplicate key update
adalah untuk.
Halaman Manual untuk itu di sini .
Caranya adalah tabel tersebut perlu memiliki kunci yang unik (bisa berupa gabungan) agar clash
melakukan insert dapat dideteksi. Dengan demikian, pembaruan terjadi pada baris itu, jika tidak, sisipan. Itu bisa menjadi kunci utama, tentu saja.
Dalam kasus Anda, Anda dapat memiliki kunci komposit seperti
unique key(theName,theDate)
Jika baris sudah ada, clash
terdeteksi, dan pembaruan terjadi.
Ini contoh lengkapnya
create table myThing
( id int auto_increment primary key,
name int not null,
values1 int not null,
values2 int not null,
dates date not null,
unique key(name,dates) -- <---- this line here is darn important
);
insert myThing(name,values1,values2,dates) values (777,1,1,'2015-07-11') on duplicate key update values2=values2+1;
insert myThing(name,values1,values2,dates) values (778,1,1,'2015-07-11') on duplicate key update values2=values2+1;
-- do the 1st one a few more times:
insert myThing(name,values1,values2,dates) values (777,1,1,'2015-07-11') on duplicate key update values2=values2+1;
insert myThing(name,values1,values2,dates) values (777,1,1,'2015-07-11') on duplicate key update values2=values2+1;
insert myThing(name,values1,values2,dates) values (777,1,1,'2015-07-11') on duplicate key update values2=values2+1;
tampilkan hasil
select * from myThing;
+----+------+---------+---------+------------+
| id | name | values1 | values2 | dates |
+----+------+---------+---------+------------+
| 1 | 777 | 1 | 4 | 2015-07-11 |
| 2 | 778 | 1 | 1 | 2015-07-11 |
+----+------+---------+---------+------------+
Seperti yang diharapkan, sisipkan pada pembaruan kunci duplikat berfungsi, hanya 2 baris.