![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 249 Pomógł: 0 Dołączył: 22.12.2011 Ostrzeżenie: (10%) ![]() ![]() |
Witam serdecznie wszystkich.
Mam zagwozdkę z tematyki logiki. Nie wiem jak odpowiednio i optymalnie dodawać wartości do Bazy Danych z tablicy dynamicznej wielowymiarowej a konkretniej tablicy która codziennie ma nowe tablice - jedne dodane drugie skasowane i nie mam zbytnio na otrzymane dane wpływu. Przykładowa tablica wygląda tak
Ostatnie tablice są zawsze najnowsze lecz są to ilości randomowe dlatego może być 1 nowa dziennie lub 10 nowych. Chciałbym teraz dodawać tylko i wyłącznie nowe unikalne tablice do Bazy Danych - tak aby wpisy się nie duplikowały i jeśli dana tablica jest w bazie to powinna zostać pominięta a nowa unikalna powinna zostać dodana. Jak mogę rozwiązać taką logikę? Proszę o jakieś porady itp. Ten post edytował MESSIAH :) 1.08.2016, 15:42:03 |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
ID jest unikatowe? no to nadaj w bazie na to pole UNIQUE i wkladaj po kolei jak leci. Jak sie wylozy znaczy ze juz jest (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 249 Pomógł: 0 Dołączył: 22.12.2011 Ostrzeżenie: (10%) ![]() ![]() |
Tak każda tablica ma swój unikatowy ID. Jeśli będzie ten UNIQUE to MySQL już nie przyjmie tej samej wartości?
|
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Jeśli będzie ten UNIQUE to MySQL już nie przyjmie tej samej wartości? Tak, na tym wlasnie polega index UNIQUE - jak sama nazwa wskazuje jest unikatowy
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 249 Pomógł: 0 Dołączył: 22.12.2011 Ostrzeżenie: (10%) ![]() ![]() |
Teraz mi wysypuje błąd:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry Można wyłączyć ten konkretny błąd? Używam PDO. Mam zrobić if statemen dla poprawnego wysłania do BD i zrobić exit w razie duplikatu? |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Kiedy ci to wyskakuje? Jak probujesz stworzyc ten UNIQUE indeks czy juz jak dodajesz nowe rekordy?
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 249 Pomógł: 0 Dołączył: 22.12.2011 Ostrzeżenie: (10%) ![]() ![]() |
Jak dodaje nowe wpisy. Myślałem że ten UNIQUE jeśli natrafi na duplikat ominie go i przejdzie do następnego a tutaj pluje błędem. Trochę to będzie upierdliwe przy większej ilości tablic. Chciałbym aby zostały tylko dodane nowe tablice a duplikatuy ominięte.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
INSERT IGNORE INTO
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 249 Pomógł: 0 Dołączył: 22.12.2011 Ostrzeżenie: (10%) ![]() ![]() |
O to działa tylko dlaczego ID w bazie danych jest podnoszone o ilość prób INSERT?
Mam np: ID 27 po 3 próbach wysłania tego samego zapytania UNIQUE omija duplikaty lecz przy następnej próbie wysłania innych wartości zostają one prawidłowo dodane z tą różnicą iż ID wyniesie 31 a nie 28. |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
A po co korzystasz z autoincrement skoro i tak masz swoje ID? Czemu nie skorzystasz tylko z tego?
Co do problemu to masz kilka opcji http://stackoverflow.com/questions/5655396...ent-primary-key https://www.percona.com/blog/2011/11/29/avo...-insert-ignore/ http://stackoverflow.com/questions/5924762...uplicate-insert
Powód edycji: [nospor]:
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Dlatego że masz tabelę typu InnoDB. Taki urok (IMG:style_emoticons/default/smile.gif) Nie przejmowałbym się tym jakoś specjalnie. Zanim zapełnisz wszystkie ID minie troszkę czasu. W ostateczności możesz zmienić na MyIsam
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 249 Pomógł: 0 Dołączył: 22.12.2011 Ostrzeżenie: (10%) ![]() ![]() |
Dlatego że masz tabelę typu InnoDB. Taki urok (IMG:style_emoticons/default/smile.gif) Nie przejmowałbym się tym jakoś specjalnie. Zanim zapełnisz wszystkie ID minie troszkę czasu. W ostateczności możesz zmienić na MyIsam Dajmy na to że będzie minimum 25 tabel dziennie * 12/1h * 24h = 7200 id. dziennie |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Czyli starczy Ci na kilkaset lat (IMG:style_emoticons/default/wink.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.09.2025 - 13:39 |