Vous pouvez soit savoir s'il s'y trouve d'abord, par SELECT
par url
, ou vous pouvez créer l'url
champ unique :
CREATE TABLE IF NOT EXISTS kompas_url
...
url VARCHAR(1000) UNIQUE,
...
)
Cela empêchera MySQL d'insérer une ligne en double, mais il signalera également une erreur lorsque vous essayez d'insérer. Ce n'est pas bon - bien que nous puissions gérer l'erreur, cela pourrait en masquer d'autres. Pour contourner ce problème, nous utilisons le 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()
Cela nous permet de fournir une UPDATE
dans le cas d'une valeur en double dans un champ unique (cela peut inclure votre clé primaire). Dans ce cas, nous souhaitons probablement mettre à jour la modified_date
champ avec la date actuelle.
MODIF : Comme suggéré par ~unutbu
, si vous ne voulez rien changer sur un doublon, vous pouvez utiliser le INSERT IGNORE
syntaxe. Cela fonctionne simplement comme suit :
INSERT IGNORE INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
Cela transforme simplement certains types d'erreurs en avertissements - le plus utilement, l'erreur qui indique qu'il y aura une entrée unique en double. Si vous placez le mot-clé IGNORE
dans votre instruction, vous n'obtiendrez pas d'erreur, la requête sera simplement abandonnée. Dans les requêtes complexes, cela peut également masquer d'autres erreurs qui pourraient être utiles, il est donc préférable de s'assurer que votre code est correct si vous souhaitez l'utiliser.