Можете първо да разберете дали е там чрез SELECT
ing от 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
в изявлението си, няма да получите грешка – заявката просто ще бъде премахната. При сложни заявки това може да скрие и други грешки, които обаче могат да бъдат полезни, така че е най-добре да се уверите, че кодът ви е правилен, ако искате да го използвате.