U kunt ofwel INSERT IGNORE
. gebruiken of REPLACE
of INSERT ... ON DUPLICATE KEY UPDATE ...
Elk vereist dat u een unieke beperking heeft op product_id, ip_address
INVOER NEGEREN
INSERT IGNORE INTO products VALUES (null, 111, '8.8.8.8')
zal de invoeging negeren, als de invoer al bestaat.
VERVANG
REPLACE INTO products VALUES (null, 111, '8.8.8.8')
zal een verwijdering en een nieuwe invoeging uitvoeren.
INSERT ... UPDATE
INSERT INTO products VALUES (null, 111, '8.8.8.8')
ON DUPLICATE KEY UPDATE products SET last_modified = NOW()
Zal proberen in te voegen en als dat niet lukt, update het bestaande record.
In jouw geval denk ik dat het goed moet komen met INSERT IGNORE
, echter Als u andere waarden wilt wijzigen als het record al bestaat, INSERT ... UPDATE ...
zou goed moeten werken.
Ik zou over het algemeen niet aanraden om REPLACE
te gebruiken tenzij je echt een DELETE FROM table WHERE ...
. wilt plus INSERT INTO TABLE ...
Bijwerken
Dit vereist (voor dit voorbeeld) een unieke index voor het combinatieproduct, ip_address. Dit bereik je met
ALTER TABLE products
ADD UNIQUE INDEX `UIDX_PRODUCT__IP_ADRESS`(product, ipaddress);