Anda dapat menggunakan INSERT IGNORE
atau REPLACE
atau INSERT ... ON DUPLICATE KEY UPDATE ...
Masing-masing mengharuskan Anda untuk memiliki batasan unik pada product_id, ip_address
MASUKKAN ABAIKAN
INSERT IGNORE INTO products VALUES (null, 111, '8.8.8.8')
akan mengabaikan sisipan, jika entri sudah ada.
GANTI
REPLACE INTO products VALUES (null, 111, '8.8.8.8')
akan melakukan penghapusan plus penyisipan baru.
MASUKKAN ... PERBARUI
INSERT INTO products VALUES (null, 111, '8.8.8.8')
ON DUPLICATE KEY UPDATE products SET last_modified = NOW()
Akan mencoba memasukkan dan jika gagal memperbarui catatan yang ada.
Dalam kasus Anda, saya pikir Anda harus baik-baik saja dengan INSERT IGNORE
, namun Jika Anda ingin mengubah nilai lain jika catatan sudah ada, INSERT ... UPDATE ...
harus bekerja dengan baik.
Saya biasanya tidak akan merekomendasikan untuk menggunakan REPLACE
kecuali jika Anda benar-benar menginginkan DELETE FROM table WHERE ...
plus INSERT INTO TABLE ...
Perbarui
Ini memerlukan (untuk contoh ini) indeks unik untuk produk kombinasi, ip_address. Anda dapat mencapai ini dengan
ALTER TABLE products
ADD UNIQUE INDEX `UIDX_PRODUCT__IP_ADRESS`(product, ipaddress);