Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Połączenie insert ignore i on duplicate key ...
Forum PHP.pl > Forum > Bazy danych > MySQL
Juzek
Witam.

Mam tabelę a,b,c, która posiada "miliard" wpisów.
Chciałbym by podczas inserta w przypadku duplikatu kolumny a, dodawał się duplikat ale z inną wartością kolumny c. Tabela jest spora i szybko rośnie, dlatego szukam sposobu bardziej wydajnego niż "sprawdź czy istnieje, jeżeli tak, dodaj wpis".

Dziękuję z góry za rady.
Pozdrawiam.
trueblue
http://stackoverflow.com/questions/3884344...it-or-log-table
Przy czym u Ciebie do tej samej tabeli.
Juzek
Wszystko spoko tylko nie działa smile.gif

  1. DELIMITER $$
  2.  
  3. CREATE PROCEDURE `insert_visit`(
  4. photos_p_id__v_ip__date_add VARCHAR(255),
  5. photos_p_id INT(11),
  6. v_ip BIGINT(20),
  7. v_ip_natural VARCHAR(45),
  8. v_session_id VARCHAR(45),
  9. v_cookie TINYINT(1),
  10. v_proxy_headers TINYINT(1),
  11. v_image TINYINT(1),
  12. v_date_add DATETIME)
  13. MODIFIES SQL DATA
  14. BEGIN
  15. DECLARE duplicate_key INT DEFAULT 0;
  16. BEGIN
  17. DECLARE EXIT HANDLER FOR 1062 SET duplicate_key = 1;
  18.  
  19. INSERT INTO visits( `photos_p_id__v_ip__date_add`,`photos_p_id`, `v_ip`, `v_ip_natural`, `v_session_id`,`v_cookie`, `v_proxy_headers`, `v_image`, `v_date_add`)
  20. VALUES(photos_p_id__v_ip__date_add, photos_p_id, v_ip, v_ip_natural, v_session_id,v_cookie, v_proxy_headers, v_image, v_date_add);
  21.  
  22. END;
  23.  
  24. IF duplicate_key = 1 THEN
  25. INSERT INTO visits( `photos_p_id__v_ip__date_add`, `photos_p_id`, `v_ip`, `v_ip_natural`, `v_session_id`,`v_cookie`, `v_proxy_headers`, `v_image`, `v_date_add`,`v_value`)
  26. VALUES(photos_p_id__v_ip__date_add, photos_p_id, v_ip, v_ip_natural, v_session_id,v_cookie, v_proxy_headers, v_image, v_date_add, 0);
  27. END IF;
  28. END



  1. CALL `insert_visit`('78_618056396_2014-10-28', '1', '1', '', '', '1', '1', '1', now())


Błąd w zapytaniu (1062): Duplicate entry '78_618056396_2014-10-28' for key 'photos_p_id__v_ip__date_add_UNIQUE'
mmmmmmm
Daj SHOW TABLE visits.
Coś mi się widzi, że masz UNIQUE na JEDNO pole - photos_p_id__v_ip__date_add
EDIT: Więc ten drugi INSERT jest dla tego klucza TAKI SAM, jak i pierwszy
Juzek
I tu masz rację.
Niestety nie da się zrobić tego co chciałem, pozostaje mi insert do osobnej tabeli o identycznej strukturze :/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.