Можете да използвате или INSERT IGNORE
или REPLACE
или INSERT ... ON DUPLICATE KEY UPDATE ...
Всеки изисква да имате уникално ограничение за product_id, ip_address
ВМЕСЕТЕ ИГНОРИРАНЕ
INSERT IGNORE INTO products VALUES (null, 111, '8.8.8.8')
ще игнорира вмъкването, ако записът вече съществува.
ЗАМЕНЕТЕ
REPLACE INTO products VALUES (null, 111, '8.8.8.8')
ще извърши изтриване плюс ново вмъкване.
ВМЪКНЕТЕ ... АКТУАЛИЗИРАНЕ
INSERT INTO products VALUES (null, 111, '8.8.8.8')
ON DUPLICATE KEY UPDATE products SET last_modified = NOW()
Ще се опита да вмъкне и ако това не успее, актуализира съществуващия запис.
Във вашия случай мисля, че трябва да сте добре с INSERT IGNORE
, но ако искате да промените други стойности, ако записът вече съществува, INSERT ... UPDATE ...
трябва да работи добре.
Обикновено не бих препоръчал да използвате REPLACE
освен ако наистина не искате DELETE FROM table WHERE ...
плюс INSERT INTO TABLE ...
Актуализиране
Това изисква (за този пример) уникален индекс за комбинирания продукт, ip_address. Можете да постигнете това с
ALTER TABLE products
ADD UNIQUE INDEX `UIDX_PRODUCT__IP_ADRESS`(product, ipaddress);