SELECT
ing by によって最初にそこにあるかどうかを調べるか、フィールドを一意url
にすることができます。url
CREATE TABLE IF NOT EXISTS kompas_url
...
url VARCHAR(1000) UNIQUE,
...
)
これにより、MySQL が重複する行を挿入するのを停止しますが、挿入しようとするとエラーが報告されます。これはよくありません。エラーを処理することはできますが、他の人を偽装する可能性があります。これを回避するには、次のON DUPLICATE KEY UPDATE
構文を使用します。
INSERT INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
ON DUPLICATE KEY UPDATE modified_date = NOW()
UPDATE
これにより、一意のフィールドで値が重複している場合にステートメントを提供できます (これには主キーを含めることができます)。この場合、おそらくmodified_date
現在の日付でフィールドを更新する必要があります。
編集: ~unutbuで示唆されているように、複製で何も変更したくない場合は、INSERT IGNORE
構文を使用できます。これは単純に次のように機能します。
INSERT IGNORE INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
これにより、特定の種類のエラーが警告に変わります。最も有用なのは、一意のエントリが重複していることを示すエラーです。ステートメントにキーワードIGNORE
を配置しても、エラーは発生せず、クエリは単に削除されます。複雑なクエリでは、これにより役立つ可能性のある他のエラーも隠される可能性があるため、コードを使用する場合は、コードが正しいことを二重に確認することをお勧めします。