ここで私の考えを述べさせてください。問題を完全に理解したかどうかはわかりません。
重複キーの更新について
INSERT INTO table (ID, Col1, Col2)
VALUES (100, value1, value2)
ON DUPLICATE KEY UPDATE ID = 100; -- or whatever you need
INSERT INTO table (ID, Col1, Col2)
VALUES (100, value1, value2)
ON DUPLICATE KEY UPDATE ID = ID; -- this keeps the ID to what ever it was, no change.
存在しません
INSERT INTO funds (ID, Col1, Col2)
SELECT 100, "value1", "value2"
FROM dual
WHERE NOT EXISTS (SELECT 1
FROM table
WHERE ID = 100
);
「DUAL
テーブルが参照されていない状況では、ダミーのテーブル名として指定できます。
追加の考え。
に置換
これはINSERT
、1 つの重要な例外を除いて、まったく同じように機能します。が見つかった場合duplicate row
は、まずそれを削除してから を実行するINSERT
ため、エラー メッセージは表示されません。
<?php
mysql_query(" REPLACE INTO table SET col1='data1', col2='data2' ");
挿入 無視
これはduplicate errors
、通常、アプリケーションが壊れるのを防ぐために、を抑制する方法です。場合によっては、新しい行を挿入しようとして、重複が見つかった場合に問題なく失敗するようにしたい場合があります。
<?php
mysql_query(" INSERT IGNORE INTO table SET col1='data1', col2='data2' ");