Sie können entweder INSERT IGNORE
verwenden oder REPLACE
oder INSERT ... ON DUPLICATE KEY UPDATE ...
Jedes erfordert, dass Sie eine eindeutige Einschränkung für product_id, ip_address haben
IGNORIEREN EINFÜGEN
INSERT IGNORE INTO products VALUES (null, 111, '8.8.8.8')
ignoriert das Einfügen, wenn der Eintrag bereits existiert.
ERSETZEN
REPLACE INTO products VALUES (null, 111, '8.8.8.8')
führt eine Löschung plus eine neue Einfügung durch.
EINFÜGEN ... AKTUALISIEREN
INSERT INTO products VALUES (null, 111, '8.8.8.8')
ON DUPLICATE KEY UPDATE products SET last_modified = NOW()
Wird versuchen, den vorhandenen Datensatz einzufügen, und falls dies fehlschlägt, den vorhandenen Datensatz zu aktualisieren.
In Ihrem Fall sollten Sie mit INSERT IGNORE
zufrieden sein Wenn Sie jedoch andere Werte ändern möchten, wenn der Datensatz bereits vorhanden ist, INSERT ... UPDATE ...
sollte gut funktionieren.
Ich würde generell nicht empfehlen, REPLACE
zu verwenden es sei denn, Sie möchten wirklich eine DELETE FROM table WHERE ...
plus INSERT INTO TABLE ...
Aktualisieren
Dies erfordert (für dieses Beispiel) einen eindeutigen Index für das Kombinationsprodukt ip_address. Dies erreichen Sie mit
ALTER TABLE products
ADD UNIQUE INDEX `UIDX_PRODUCT__IP_ADRESS`(product, ipaddress);