Je kunt er eerst achter komen of het erin zit, door SELECT
via url
, of u kunt de url
uniek veld:
CREATE TABLE IF NOT EXISTS kompas_url
...
url VARCHAR(1000) UNIQUE,
...
)
Dit voorkomt dat MySQL een dubbele rij invoegt, maar het rapporteert ook een fout wanneer u probeert in te voegen. Dit is niet goed - hoewel we de fout aankunnen, kan het anderen verhullen. Om dit te omzeilen, gebruiken we de ON DUPLICATE KEY UPDATE
syntaxis:
INSERT INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
ON DUPLICATE KEY UPDATE modified_date = NOW()
Dit stelt ons in staat om een UPDATE
statement in het geval van een dubbele waarde in een uniek veld (dit kan uw primaire sleutel bevatten). In dit geval willen we waarschijnlijk de modified_date
. bijwerken veld met de huidige datum.
BEWERKEN: Zoals voorgesteld door ~unutbu
, als u niets wilt wijzigen aan een duplicaat, kunt u de INSERT IGNORE
gebruiken syntaxis. Dit werkt eenvoudig als volgt:
INSERT IGNORE INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
Dit verandert eenvoudig bepaalde soorten fouten in waarschuwingen - het handigst is de fout die aangeeft dat er een dubbele unieke invoer zal zijn. Als u het trefwoord IGNORE
. plaatst in uw verklaring, krijgt u geen foutmelding - de query wordt gewoon verwijderd. Bij complexe zoekopdrachten kan dit ook andere fouten verbergen die nuttig kunnen zijn, dus het is het beste om er dubbel zeker van te zijn dat uw code correct is als u deze wilt gebruiken.