Můžete buď použít INSERT IGNORE
nebo REPLACE
nebo INSERT ... ON DUPLICATE KEY UPDATE ...
Každý z nich vyžaduje, abyste měli jedinečné omezení product_id, ip_address
INSERT IGNORE
INSERT IGNORE INTO products VALUES (null, 111, '8.8.8.8')
bude ignorovat vložení, pokud záznam již existuje.
NAHRADIT
REPLACE INTO products VALUES (null, 111, '8.8.8.8')
provede odstranění plus nové vložení.
VLOŽTE... AKTUALIZOVAT
INSERT INTO products VALUES (null, 111, '8.8.8.8')
ON DUPLICATE KEY UPDATE products SET last_modified = NOW()
Pokusí se vložit a pokud se to nezdaří, aktualizujte stávající záznam.
Ve vašem případě si myslím, že byste měli být v pořádku s INSERT IGNORE
, pokud však chcete změnit jiné hodnoty, pokud záznam již existuje, INSERT ... UPDATE ...
by mělo fungovat dobře.
Obecně bych nedoporučoval používat REPLACE
pokud opravdu nechcete DELETE FROM table WHERE ...
plus INSERT INTO TABLE ...
Aktualizovat
To vyžaduje (pro tento příklad) jedinečný index pro kombinovaný produkt, ip_address. Můžete toho dosáhnout pomocí
ALTER TABLE products
ADD UNIQUE INDEX `UIDX_PRODUCT__IP_ADRESS`(product, ipaddress);