Şimdi bir siteden veri çekiyorum. Bu verileri database'ime kaydediyorum.
Bu siteden veri çekmeyi 1 saatte bir tekrarlamam gerekiyor. Ve bu aşamada şunu yapmak istiyorum: sadece değişen verileri veritabanımda "update"lesin, diğerlerine dokunmasın.
Resimdeki gibi bir database'im var diyelim.
İnternetten de bu ahmet mehmet fevzi cemil ali'nin sürekli olarak verilerini çekiyorum, saatte 1.
karşılarındaki 10-15-20 gibi sayılar değişebiliyor yani.
Hah işte şöyle bir şey yapmak istiyorum:
Yalnızca sayısı değişen satıra update yapmak istiyorum. Onun dışındaki satırlara hiç dokunmayayım. Bunu nasıl belirleyebilirim?
Yani nasıl bir şekilde;
yalnızca değişen satırları update table yap, diğerlerine dokunma diyebilirim?
update table_name
set bıdı = 20
where hebe = 'ahmet'
ama hmm sanırım yeni anladım. değişip değişmediğini kontrol edeyim diyorsan şöyle olabilir:
update table_name
set bıdı = 20
where hebe = 'ahmet' and bıdı != 20
Ahmet'i Mehmet'i unique olarak tanımla. Eğer ad, soyad varsa, ikisini birden tek şekilde unique yapman lazım (ayrı ayrı yaparsan olmaz). Böylelikle az sonra yapacağımız şeylerde Ahmet'in değeri değiştiğinde, eski Ahmet'e ek olarak yeni bir Ahmet daha ortaya çıkmasın.
Ardından hiç bir veri yokmuş da sıfırdan tablolara insert ediyormuşcasına bir INSERT sorgusu oluştur.
Sorgunun sonuna şunu ekle;
ON DUPLICATE KEY UPDATE guncellenecek_sutun_adlari = values(guncellenecek_degerleri)
Örnek olarak şöyle bir şey olmalı;
INSERT INTO tablo (adi, yasi) VALUES ("ahmet", "22") ON DUPLICATE KEY UPDATE yasi = VALUES(yasi)
ahmet, ve 22 yerine $adi, $yasi gibi şeyler kullanacaksın bu arada...
Bu çok performanslı bir öneri olmayabilir (olabilir de), ama çalışmalı.