Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> POMOCY! INSERT ... VALUE .... SELECT
Frank_s
post 10.07.2007, 16:24:24
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 10.07.2007

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


Witam serdecznie,
czy ktoś z szanownych grupowiczów pomoże rozwiązać mi pewien problem.

Otórz mam jedną tabelę z danymi ewidencyjnymi wielu firm. W tej tabeli każda z tych firm ma swoją niezależną numerację rekordów (nie mylić z głównym id wiersza). Na tabeli pracuje po kilku użytkowników w każdej firmie. Przed każdorazowym wykonaniem inserta do bazy wykonuję select MAX(nr) dla danej firmy. Następnie zwiększam go o 1 i w insercie dodaję do rekordu jego wartość. Wszystko jest prawie pięknie. Ostatnio jednak zdarzyło się że dwóch użytkowników z tej samej firmy dostało ten sam numer pozycji. Cóż począć z tym problemem.

Wygląda to mniej więcej jak poniżej:
mysql-> $numer="SELECT MAX(nr) FROM table1 WHERE id_firmy=X";
mysql-> INSERT INTO table1 (numer, data1, godz1,...) VALUE ('$numer','$data_1','$godz1',...);

Jak uniknąć możliwość wygenerowania tej samej wartości numeru rekordu

Próbowałem czegoś takiego:
INSERT INTO table1 (numer, data1, godz1,...) VALUE (SELECT (MAX(nr)+1) AS numer FROM table1 WHERE id_firmy=X,'$data_1','$godz1',...);
Niestety nie działa.

Nadmieniam że dane data1, godz1 są przy każdym insercie inne i nie mogę skorzystać z funkcji INSERT ... SELECT .... bez podania VALUE.

Bardzo proszę o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
sticker
post 10.07.2007, 17:44:19
Post #2





Grupa: Zarejestrowani
Postów: 611
Pomógł: 19
Dołączył: 28.02.2005
Skąd: Wrocław

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


problem tkwi w złym projekcie bazy, ale tymczasowo mozesz go obejsc na przykład w następujący sposób:
dodaj tabele nazwijmy ją temporary_id gdzie bedzie przechowywany uzgodniony z userem id oraz dajmy na to indentyfikator zalogowanej osoby, przy każdej probie pobrania przez ktoregokolwiek użytkownika numeru z bazy wyciągniesz dane z obu tabel i bedziesz wiedział czy ktoś na danym rekordzie akurat pracuje Na tej podstawie dowiesz sie jaki identyfikator ma otrzymać kolejny klient.


--------------------
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 18:37