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);