Puoi scoprire prima se è lì dentro, tramite SELECT
tramite url
oppure puoi creare l'url
campo univoco:
CREATE TABLE IF NOT EXISTS kompas_url
...
url VARCHAR(1000) UNIQUE,
...
)
Ciò impedirà a MySQL di inserire una riga duplicata, ma segnalerà anche un errore quando si tenta di inserire. Questo non va bene, anche se possiamo gestire l'errore, potrebbe mascherare gli altri. Per aggirare questo problema, utilizziamo il ON DUPLICATE KEY UPDATE
sintassi:
INSERT INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
ON DUPLICATE KEY UPDATE modified_date = NOW()
Questo ci consente di fornire un UPDATE
dichiarazione nel caso di un valore duplicato in un campo univoco (questo può includere la tua chiave primaria). In questo caso, probabilmente vorremo aggiornare il modified_date
campo con la data corrente.
MODIFICA: Come suggerito da ~unutbu
, se non vuoi modificare nulla su un duplicato, puoi utilizzare il INSERT IGNORE
sintassi. Funziona semplicemente come segue:
INSERT IGNORE INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
Questo trasforma semplicemente alcuni tipi di errori in avvisi, cosa più utile, l'errore che afferma che ci sarà una voce univoca duplicata. Se inserisci la parola chiave IGNORE
nella tua dichiarazione, non riceverai un errore:la query verrà semplicemente eliminata. Nelle query complesse, questo potrebbe anche nascondere altri errori che potrebbero essere utili, quindi è meglio assicurarsi doppiamente che il codice sia corretto se si desidera utilizzarlo.