konto usunięte

Temat: Problem z automatycznym nadawaniem ID

Michał Wojtkowiak:
Problem polega na tym, że podczas jednoczesnego kliknięcia przez wielu użytkowników przycisku zatwierdź, nadawany, jest ten sam id rekordu. Nie można tego zrobić auto-incrementem, bo id składa się z cyfr, znaków i liter.
Część składająca się z cyfr nadawana jest za pomocą zapytania select max() from... . Reszta znaków w ID jest statyczna i nie ulega zmianie.

Zamiast bawic sie po stronie parsera, napisz funkcje na serwerze baz danych, ktora zadba o zablokowanie tabeli, zbudowanie ID, zaktualizowanie czego trzeba i zwroci nowe ID jako wynik.

Uniezalezniasz sie od zmian w kodzie + zyskujesz na szybkosci operacji (kod parsowany *zawsze* bedzie dzialal wolniej niz skompilowana funkcja w DB) + modyfikacja tabeli/bazy wymaga poprawy kodu w jednym miejscu (DB) zamiast wielu (PHP).

Tyle moje 2 grosze ;)Łukasz S. edytował(a) ten post dnia 19.02.08 o godzinie 13:30
Jakub L.

Jakub L. Programista

Temat: Problem z automatycznym nadawaniem ID

Wojciech Piotrowicz:
Jakub L.:
osobnikowi który wymyślił select max() zrobić coś złego.

tia, tylko ja rozumiem autora watku az za bardzo.
wiem jak to jest poprawiac/dorabiac cos do czegos co jest kobylaste i napisane dawno temu, nie ma czesto mozliwosci wprowadzenia zmian, ktore MY uznalibysmy za lepsze (nie tyle mozliwosci, chodzi mi o czasochlonnosc).

Mów mi więcej, walczyłem rok ze zwalonym projektem i implementacją, potem znalazło się trochę (miesiąc) czasu i przepisałem co trzeba i tada, błędy przestały się pojawiać.

konto usunięte

Temat: Problem z automatycznym nadawaniem ID

No dobra, może źle określiłem strukturę tabeli.

Tak wygląda początek tabeli:

1. ID = auto-increment
2. nr_wniosku jest w takim formacie:

pochodzenie uż./select max(ID)+1 ... /dodatkowe informacje

3. ...

I właśnie pkt. 2 się sypie.

Blokada tabeli na bank to załatwi.

konto usunięte

Temat: Problem z automatycznym nadawaniem ID

A dlaczego po dodaniu tego pola nie możesz wywołać LAST_INSERT_ID() i po tym ID zaktualizować wartość pola nr_wniosku?

W PostgreSQL w ogóle mógłbyś pobrać w jednym zapytaniu wartość ID z sequencer'a.

konto usunięte

Temat: Problem z automatycznym nadawaniem ID

Daj blokadę na poziomie wierszy (InnoDB), a nie na poziomie tabeli - w tej tabeli, w której masz problem. Zapewne korzystasz z MyISAM, a do Twoich kłopotów idealnie nada się silnik innodb. poza tym, coś za dużo kombinujesz - można było to pewnie zrobić bardziej elegancko i bezproblemowo, ale Ty takiego rozwiązania pewnie nie widziałeś ;).Jakub Świegot edytował(a) ten post dnia 20.02.08 o godzinie 09:15

konto usunięte

Temat: Problem z automatycznym nadawaniem ID

Sławomir Łukjanow:
A dlaczego po dodaniu tego pola nie możesz wywołać LAST_INSERT_ID() i po tym ID zaktualizować wartość pola nr_wniosku?

W PostgreSQL w ogóle mógłbyś pobrać w jednym zapytaniu wartość ID z sequencer'a.


Obojętnie jak zrobię, to i tak zwróci takie samo ID.

Przestańcie mi tu pierdzielić o silnikach baz ... .

konto usunięte

Temat: Problem z automatycznym nadawaniem ID

ano.. nieprzemyślane od początku projekty skutkują frustracją ;-).

konto usunięte

Temat: Problem z automatycznym nadawaniem ID

Jakub Świegot:
ano.. nieprzemyślane od początku projekty skutkują frustracją ;-).

Proponuję koledze wrócić do SoftICE'a i łamania programów shareware, zabezpieczeń cd i dongli (jeśli wiadomo o co chodzi) :)

konto usunięte

Temat: Problem z automatycznym nadawaniem ID

SoftICE nie śmiga na MS Vista, a na XP też ma problemy, nie wszystkie drivery go wspierają, sam SI również nie jest już rozwijany ;-). Dongla w życiu nie złamałem, a poza tym nie wiem jaki związek z dyskusją ma Twoje wtrącenie.

konto usunięte

Temat: Problem z automatycznym nadawaniem ID

SoftICE już nie działa, ale WinDASM wciąż lata.

Taki OFFTopic jak to ktoś ładnie nazwał.Michał Wojtkowiak edytował(a) ten post dnia 20.02.08 o godzinie 20:00

konto usunięte

Temat: Problem z automatycznym nadawaniem ID

Michał Wojtkowiak:
SoftICE już nie działa, ale WinDASM wciąż lata.

Taki OFFTopic jak to ktoś ładnie nazwał.Michał Wojtkowiak edytował(a) ten post dnia 20.02.08 o godzinie 20:00

Idźcie się oftopikować na priva... To nie grono czy wykop, tu się powinno dyskutować rzeczowo...

konto usunięte

Temat: Problem z automatycznym nadawaniem ID

OllyDbg + wszystkie potrzebne dodatki ;-). A nie tam staroć jakiś wywlekasz :P.

konto usunięte

Temat: Problem z automatycznym nadawaniem ID

Piotr Lewandowski:
Michał Wojtkowiak:
SoftICE już nie działa, ale WinDASM wciąż lata.

Taki OFFTopic jak to ktoś ładnie nazwał.Michał Wojtkowiak edytował(a) ten post dnia 20.02.08 o godzinie 20:00

Idźcie się oftopikować na priva... To nie grono czy wykop, tu się powinno dyskutować rzeczowo...

Kiedyś mnie pouczałeś, że ostatnich wypowiedzi się nie cytuje. To byłeś Ty? :D

konto usunięte

Temat: Problem z automatycznym nadawaniem ID

Przecież dyskutujemy rzeczowo, a że robimy sobie małą przerwę ...

konto usunięte

Temat: Problem z automatycznym nadawaniem ID

Z podręcznika MySQL:

For LAST_INSERT_ID(), the most recently generated ID is maintained in the server on a per-connection basis. It is not changed by another client. It is not even changed if you update another AUTO_INCREMENT column with a non-magic value (that is, a value that is not NULL and not 0). Using LAST_INSERT_ID() and AUTO_INCREMENT columns simultaneously from multiple clients is perfectly valid. Each client will receive the last inserted ID for the last statement that client executed.

Więc LAST_INSERT_ID() to nie to samo, co MAX()...

Dopóki nie zmienisz połączenia z bazą będzie dobrze zwracało ID, niezależnie od tego, czy w danym momencie 100 innych osób doda rekordy.

konto usunięte

Temat: Problem z automatycznym nadawaniem ID

Jakub Świegot:

Kiedyś mnie pouczałeś, że ostatnich wypowiedzi się nie cytuje. To byłeś Ty? :D

Odnoszę wrażenie, że nie potrafisz dyskutować bez osobistych przytyków, mam rację?
Nie ostatnich - raczej nie powinno cytować się 100 linijek a odpowiadać na ostatnią linijkę wiadomości/e-maila...
Andrzej Zawadka

Andrzej Zawadka
Projektant/Programis
ta

Temat: Problem z automatycznym nadawaniem ID

Niesamowite jest że udało się wam pokłócić w takim rzeczowym wątku. Ot wyłazi na wierzch słowiańska dusza. Tu przypomniało mi się jak kiedyś czytałem zapiski jakiegoś niemieckiego kronikarza z VIII czy IX wieku który po podróży po słowiańskich ziemiach relacjonował niemieckiemu cesarzowi że "gdyby Słowianie nie byli między sobą skłóceni to żaden lud by im nie sprostał"

konto usunięte

Temat: Problem z automatycznym nadawaniem ID

Ale się rozgadaliście :)

Następna dyskusja:

Problem z php i excelem




Wyślij zaproszenie do