Вы можете узнать, находится ли он там первым, SELECT
или 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
в свое утверждение, вы не получите сообщение об ошибке - запрос будет просто отброшен. В сложных запросах это также может скрывать другие ошибки, которые могут быть полезны, поэтому лучше убедиться, что ваш код верен, если вы хотите его использовать.