Buď můžete zjistit, zda tam je jako první, pomocí SELECT
pomocí url
, nebo můžete vytvořit url
jedinečné pole:
CREATE TABLE IF NOT EXISTS kompas_url
...
url VARCHAR(1000) UNIQUE,
...
)
To zabrání MySQL ve vkládání duplicitního řádku, ale také ohlásí chybu, když se pokusíte vložit. To není dobré – i když chybu zvládneme, ostatní to může zamaskovat. Abychom to obešli, používáme ON DUPLICATE KEY UPDATE
syntaxe:
INSERT INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
ON DUPLICATE KEY UPDATE modified_date = NOW()
To nám umožňuje poskytnout UPDATE
v případě duplicitní hodnoty v jedinečném poli (může zahrnovat váš primární klíč). V tomto případě budeme pravděpodobně chtít aktualizovat modified_date
pole s aktuálním datem.
UPRAVIT: Jak navrhuje ~unutbu
, pokud nechcete na duplikátu nic měnit, můžete použít INSERT IGNORE
syntax. Funguje to jednoduše následovně:
INSERT IGNORE INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
To jednoduše změní určité druhy chyb na varování – nejužitečnější je chyba, která uvádí, že se jedná o duplicitní jedinečný záznam. Pokud umístíte klíčové slovo IGNORE
do vašeho výpisu, nedostanete chybu – dotaz bude jednoduše vynechán. Ve složitých dotazech to může také skrýt další chyby, které by však mohly být užitečné, takže je nejlepší se dvakrát ujistit, že je váš kód správný, pokud jej chcete použít.