Możesz najpierw dowiedzieć się, czy jest tam, przez SELECT
ing przez url
lub możesz utworzyć url
pole unikalne:
CREATE TABLE IF NOT EXISTS kompas_url
...
url VARCHAR(1000) UNIQUE,
...
)
To powstrzyma MySQL przed wstawieniem zduplikowanego wiersza, ale zgłosi również błąd podczas próby wstawienia. To nie jest dobre — chociaż możemy poradzić sobie z błędem, może to zamaskować innych. Aby obejść ten problem, używamy ON DUPLICATE KEY UPDATE
składnia:
INSERT INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
ON DUPLICATE KEY UPDATE modified_date = NOW()
To pozwala nam zapewnić UPDATE
oświadczenie w przypadku zduplikowanej wartości w unikalnym polu (może to obejmować Twój klucz podstawowy). W tym przypadku prawdopodobnie chcemy zaktualizować modified_date
pole z bieżącą datą.
EDYTUJ: Zgodnie z sugestią ~unutbu
, jeśli nie chcesz niczego zmieniać w duplikacie, możesz użyć INSERT IGNORE
składnia. Działa to po prostu w następujący sposób:
INSERT IGNORE INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
To po prostu zamienia pewne rodzaje błędów w ostrzeżenia — najbardziej przydatne jest błąd, który stwierdza, że będzie zduplikowany unikalny wpis. Jeśli umieścisz słowo kluczowe IGNORE
w swoim oświadczeniu nie pojawi się błąd — zapytanie zostanie po prostu usunięte. W złożonych zapytaniach może to również ukryć inne błędy, które mogą być przydatne, więc najlepiej jest podwójnie upewnić się, że kod jest poprawny, jeśli chcesz go użyć.