Ob es drin ist, kannst du entweder erst durch SELECT
herausfinden per url
, oder Sie können die url
erstellen Feld eindeutig:
CREATE TABLE IF NOT EXISTS kompas_url
...
url VARCHAR(1000) UNIQUE,
...
)
Dadurch wird MySQL daran gehindert, eine doppelte Zeile einzufügen, aber es wird auch einen Fehler melden, wenn Sie versuchen, es einzufügen. Das ist nicht gut – obwohl wir mit dem Fehler umgehen können, könnte er andere verschleiern. Um dies zu umgehen, verwenden wir den ON DUPLICATE KEY UPDATE
Syntax:
INSERT INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
ON DUPLICATE KEY UPDATE modified_date = NOW()
Dadurch können wir ein UPDATE
bereitstellen Anweisung im Fall eines doppelten Werts in einem eindeutigen Feld (dies kann Ihren Primärschlüssel enthalten). In diesem Fall möchten wir wahrscheinlich das modified_date
aktualisieren Feld mit dem aktuellen Datum.
BEARBEITEN: Wie von ~unutbu
vorgeschlagen , wenn Sie an einem Duplikat nichts ändern möchten, können Sie INSERT IGNORE
verwenden Syntax. Das funktioniert einfach so:
INSERT IGNORE INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
Dadurch werden bestimmte Arten von Fehlern einfach in Warnungen umgewandelt – am nützlichsten ist der Fehler, der besagt, dass es einen doppelten eindeutigen Eintrag geben wird. Wenn Sie das Schlüsselwort IGNORE
platzieren in Ihre Anweisung, erhalten Sie keinen Fehler – die Abfrage wird einfach verworfen. Bei komplexen Abfragen kann dies auch andere Fehler verbergen, die jedoch nützlich sein könnten. Stellen Sie daher am besten sicher, dass Ihr Code korrekt ist, wenn Sie ihn verwenden möchten.