Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Połączenie insert ignore i on duplicate key ..., ... dodanie duplikatu ze zmianą wartości.
Juzek
post
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 1.08.2007

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


http://stackoverflow.com/questions/3884344...it-or-log-table
Przy czym u Ciebie do tej samej tabeli.


--------------------
Go to the top of the page
+Quote Post
Juzek
post
Post #3





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 1.08.2007

Ostrzeżenie: (0%)
-----


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'
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #4





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


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

Ten post edytował mmmmmmm 15.11.2014, 22:27:38
Go to the top of the page
+Quote Post
Juzek
post
Post #5





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 1.08.2007

Ostrzeżenie: (0%)
-----


I tu masz rację.
Niestety nie da się zrobić tego co chciałem, pozostaje mi insert do osobnej tabeli o identycznej strukturze :/
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 08:03